Перейти к содержимому



Правильный заголовок Last-Modified

#1 sergei299
sergei299
  • Неактивные
  • 2 сообщений
  • Репутация: 1
1

Отправлено 21 Июнь 2013 - 10:47

(Конкурсная тема, конкурс "Web-ошибки")

Свой первый сайт я сделал самописный на инклюдах и прочитав советы Яндеса:

Следите, чтобы все нужные страницы сайта отдавали код 200 OK.
Следите за корректностью http-заголовков. В частности, важно, содержание ответа, который сервер отдает на запрос «if-modified-since». Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа.

долгое время искал способ решения этой проблемы.

Реализовать все это получилось вставив этот код <!--?php include $_SERVER['DOCUMENT_ROOT'].'/is-modified.php' ; ?--> перед тегом на каждой странице и закинув на сайта файл is-modified.php со следующим содержимым
<!--?php
$failo=substr($SERVER_NAME.$SCRIPT_FILENAME,strlen($SERVER_NAME));
$LastModified_unix=filemtime($failo);
$LastModified = gmdate('D, d M Y H:i:s',filemtime(substr($SERVER_NAME.$SCRIPT_FILENAME,strlen($SERVER_NAME)))).' GMT';
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))	
  $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))	
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince -->= $LastModified_unix)
{
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');	
exit;
}
header('Last-Modified: '. $LastModified);
//компрессия на сервере
ob_start("ob_gzhandler");
?>

Для сайтов на Вордпресс я делаю это при помощи плагина wp-super-cache поставив галочку в настройках возле пункта Ошибка 304

Думаю данная информация может пригодится начинающим Вебмастерам

При поддержке: Fozzy - эксклюзивный спонсор конкурса на Masterwebs. На хостинге Fozzy ваш сайт будет работать до 3-х раз быстрее, а отзывчивая поддержка поможет в любой трудной ситуации. Попробуйте быстрый хостинг Fozzy бесплатно в течение 7 дней!
Изображение

 

 

  • 1

#2 fedornabilkin
fedornabilkin
  • Модератор
  • 1 181 сообщений
  • Репутация: 203

Отправлено 21 Июнь 2013 - 16:02

Я как-то тоже задавался этим вопросом, все вроде сделал, но не учел кое-чего.
Когда пользователь запрашивает страницу, я брал значения из БД, сверял и все вроде ок, но загвоздка в авторизации.
Если пользователь впервые зашел на страницу без авторизации, то браузер закеширует форму логин/пасс, а пользователь потом авторизуется, зайдет на страницу, а ему браузер из кэша с формой авторизации.
Как быть не знаю.
  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#3 Sergey_on
Sergey_on
  • Неактивные
  • 8 сообщений
  • Репутация: 3

Отправлено 02 Июль 2013 - 18:37

$LastModified_unix=filemtime($failo);
$LastModified = gmdate('D, d M Y H:i:s',filemtime(substr($SERVER_NAME.$SCRIPT_FILENAME,strlen($SERVER_NAME)))).' GMT';


А я в одной из своих недавних статей как раз писал о том, что не рекомендую использовать время последнего изменения файла для указания даты последнего изменения страницы, так как многие хостинг провайдеры не выдают корректное время изменения файла, а потому к нему лучше не привязываться. Кстати, вот моя статья об этом: заголовки Last-Modified и if-modified-since.
  • 0



Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
BLIK BLIK 1-й за Ноябрь
Очков активности: 672 0 тем, 32 сообщения, 14 баллов репутации
ТОП самых активных за этот месяц
  • Фотография Totti
    #1

    Totti
    Очков активности: 172.5 1 тема, 20 сообщений, 5 баллов репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 138 Вне конкурса за определение пользователя месяца

  • Фотография Victim
    #3

    Victim
    Очков активности: 72 0 тем, 8 сообщений, 6 баллов репутации

  • Фотография akmid81
    #4

    akmid81 (biznessystem.ru)
    Очков активности: 57 3 темы, 10 сообщений, 2 балла репутации

  • Фотография kolver
    #5

    kolver
    Очков активности: 54 2 темы, 12 сообщений, 2 балла репутации

  • Фотография Vmir
    #6

    Vmir
    Очков активности: 51 1 тема, 14 сообщений, 2 балла репутации

  • Фотография TimurR
    #7

    TimurR
    Очков активности: 42 3 темы, 5 сообщений, 2 балла репутации

  • Фотография NataliaAntalia
    #8

    NataliaAntalia (zdorovemedicina.ru)
    Очков активности: 39 Вне конкурса за определение пользователя месяца

  • Фотография MattCutts
    #9

    MattCutts (dmitrylee.ru)
    Очков активности: 30 Вне конкурса за определение пользователя месяца

  • Фотография FIvYUr
    #10

    FIvYUr (moy-evroopt.ru)
    Очков активности: 24 0 тем, 16 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 29.11.2019
  • Яндекс выдача: 15.12.2019
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru