Google Search, SEO инструкции, SEO новости

HTTP заголовки Last-Modified и If-Modified-Since зачем они нужны?

HTTP заголовки позволяют клиенту и серверу отправлять дополнительную информацию с HTTP запросом или ответом.


HTTP заголовок Last-Modified


Заголовок Last-Modified в ответе HTTP содержит дату и время, в которую, по мнению удаленного сервера, запрашиваемый ресурс был изменен. Он используется в качестве средства проверки для определения того, остался ли ресурс неизменным. Этот заголовок менее надежный, чем ETag, и используется как резервный механизм. Условный запрос, содержащий заголовок If-Modified-Since или If-Unmodified-Since позволяет серверу использовать для сравнения эту дату.


Совместимость  Last-Modified с браузерами



HTTP заголовок  If-Modified-Since


Заголовок HTTP запроса If-Modified-Since делает запрос условным: сервер отправит обратно запрошенный ресурс с статусом 200, только если он был изменен после указанной даты. Если запрос не был изменен после указанной даты, ответ будет 304 без какого-либо тела; заголовок Last-Modified при этом будет содержать дату последней модификации. В отличие от If-Unmodified-SinceIf-Modified-Since может использоваться только с GET или HEAD.

При использовании в сочетании с If-None-Match заголовок If-Modified-Since игнорируется, кроме тех случаев, когда сервер не поддерживает If-None-Match.

Наиболее распространенным вариантом использования является обновление кэшированного объекта, не связанного с ETag.

Совместимость If-Modified-Since с браузерами


Зачем нужен Last-Modified для вашего сайта?


  • Экономия Трафика. Если страница не изменилась, то сервер прекратит передачу данных после отправки заголовков с кодом 304 Not Modified, тело страницы, изображения и другие объекты передаваться не будут.
  • Снижение нагрузки на сервер. Правильная реализация проверки времени последнего изменения страницы может значительно (до 30% и более) сократить нагрузку на сервер.
  • Ускорение индексации поисковыми системами. Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок If-Modified-Since. Этот заголовок позволит веб-серверу сообщать Google, изменилось ли содержание сайта со времени последнего сканирования. Поддержка данной функции сократит нагрузку на пропускную способность и издержки — говорит официальный Google в справке для вебмастеров.

Как реализовать отправку HTTP заголовока Last-Modified с помощью php


Все просто — получаем время последнего изменения страницы, проверяем наличие If-Modified-Since, если есть — отдаем 304 Not Modified и останавливаем работу скрипта, иначе генерируем заголовок Last-Modified и отдаем страницу.

<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$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);
?>

Related Posts

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *