Блог в котором есть много интересной информации…. Заголовок Last-Modified ускоряет индексацию новых страниц в разы Так нужен ли Last-Modified или нет

Syntax

Last-Modified: , :: GMT

Directives

One of "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", or "Sun" (case-sensitive). 2 digit day number, e.g. "04" or "23". One of "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (case sensitive). 4 digit year number, e.g. "1990" or "2016". 2 digit hour number, e.g. "09" or "23". 2 digit minute number, e.g. "04" or "59". 2 digit second number, e.g. "04" or "59". GMT

Greenwich Mean Time. HTTP dates are always expressed in GMT, never in local time.

Examples

Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

Specifications

Specification Title
RFC 7232, section 2.2: Last-Modified Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Browser compatibility

The compatibility table in this page is generated from structured data. If you"d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
Last-Modified Chrome Full support Yes Edge Full support 12 Firefox Full support Yes IE Full support Yes Opera Full support Yes Safari Full support Yes WebView Android Full support Yes Chrome Android Full support Yes Firefox Android Full support Yes Opera Android Full support Yes Safari iOS Full support Yes Samsung Internet Android Full support Yes

HTTP заголовок Last-Modified (последние изменения) передает клиенту время последнего изменения документа (веб-страницы). Клиент (браузер или поисковый робот) отправляет серверу заголовок «If-Modified-Since » и если дата последнего изменения страницы совпадает, сервер возвращает заголовок «304 Not Modified » и не загружает страницу. Если время последнего изменения отличается (или last modified header не настроен) — сервер возвращает заголовок «200 OK » и загружает страницу. То есть вместо повторной перезагрузки страницы и обновления кеша, клиент получает всего лишь заголовок 304 . Клиент экономит трафик, а сервер отдает меньше данных — обоюдная экономия.

Но, зачем была бы эта статья, если не рассказать про пользу, которую настройка заголовка Last-Modified несет для , а если точнее для ускорения индексации сайта. Нетрудно догадаться, что 10 страниц сайта будут проиндексированы быстрее, чем 1000. Тот же принцип, который позволяет оптимизировать загрузку страниц работает и для индексации. Поисковой системе не нужно индексировать 1000 страниц, чтобы найти 10 новых страниц. Благодаря last modified, мы оставляем для робота только новые страницы (или обновленные). Робот приходит на сайт и берет сперва то, что нужно, а потом все остальное.

Настройка заголовка Last-Modified

Следите за корректностью http-заголовков. В частности, важно, содержание ответа, который сервер отдает на запрос «if-modified-since». Заголовок Last-Modified должен отдавать корректную дату последнего изменения документа. Даже если сервер не выдает дату последней модификации документа (last-modified), ваш сайт будет проиндексирован. Однако в этом случае следует учитывать следующее: - в результатах поиска не будет показываться дата рядом со страницами вашего сайта; - при сортировке по дате сайт не будет виден большинству пользователей; - робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже. Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок "If-Modified-Since". Этот заголовок позволит веб-серверу сообщать Google, изменился ли контент сайта со времени последнего сканирования. Поддержка этой функции сокращает издержки и нагрузку на полосу пропускания.

Вот примеры того, как настроить отправку заголовка last-modified и правильную обработку If-Modified-Since.

Как настроить meta Last-Modified для статичных html страниц

Как настроить Last-Modified в php

= $LastModified_unix) { header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified"); exit; } header("Last-Modified: ". $LastModified); ?>

Как настроить Last-Modified .htaccess

RewriteRule .* - RewriteRule .* -

Как настроить Last-Modified nginx + php

location ~ .php$ { … if_modified_since off; fastcgi_pass fcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /<путь > /web$fastcgi_script_name; … fastcgi_pass_header Last-Modified; include fastcgi_params; }

Проверить Last-Modified

Когда передача заголовка клиенту настроена, не повредит проверка last modified на корректность. Проверить Last-Modified на собственном или стороннем сайта можно через онлайн сервисы .

Или сделать свою проверку на корректную обработку заголовка Last-Modified:

Настройка заголовка Last-Modified и обработка заголовка If-Modified-Since будет крайне полезна любому более или менне крупному сайту. Скорость обработки страниц сайта может стать значительным . Сравнительно несложная настройка не создаст проблем, тем более, что для популярных CMS вроде joomla, wordpress, modx и т.д. существуют готовые решения.

Вот не было у меня печали, пока не установил себе сегодня плагин Seo Scan. Хороший плагин, который показывает, что может не понравиться google в вашем сайте и сервере. И мой сайт кое в чем не понравился точно — это отсутствие last-modified.


Немного теории, сам только сегодня про это узнал. Last-modified — это http заголовок, который посылает сигнал о том, были ли на такой-то странице изменения или нет, посылая ответ If-Modified-Since с кодом 304. Как то так…

Хотя без всего этого сайт будет индексироваться, как говорит Яндекс, но есть и существенные минусы при отсутствии этого заголовка:

  • в результатах поиска не будет показываться дата рядом со страницами сайта;
  • при сортировке по дате сайт не будет виден пользователям;
  • робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже.

Как видите, минусов много, и в первую очередь — это не очень шустрая индексация и переиндексация сайта. То есть, вы внесли в статью ПОЛЕЗНОЕ изменение, а я их сейчас делаю много каждый день, а Яндекс и Google могут увидеть это только через пару месяцев! Нет, такой хоккей нам не нужен, теперь я разобьюсь в лепешку, а исправлю этот недочет!

Как проверить last-modified?

Проверить можно разными способами, в wordpress самое простое — это установить вышеупомянутый плагин Seo Scan , у меня он выдал такое:

Тоже барахлит, но это другая история, потом поковыряюсь и с этим. Можно так же проверить last-modified через сервис с одноименным названием last-modified.com


Как видите, и тут показывает отсутствие ответа If-Modified-Since — Last Modifed не найден! А можно использовать сервис Яндекса Проверка ответа сервера


Тут тоже самое — Код статуса HTTP: «304 Not Modified» — значит не работает система. Хотя через какое-то время явная ошибка пропала, но код ответа 304 так и не появился.

Сразу стало интересно, а у кого-то хоть это работает? Решил проверить это у тех блогеров, которые сами писали мануалы на эту тему:


Да, у парня из ТОПа по этому запросу Last-Modified найден, а значит это возможно и для меня. Кстати, в его статье перечисляются многие способы настройки Last Modified, попробуем и их, хотя я нашел и другие.

Как настроить last-modified?

Буду описывать все способы, которые попробовал и сразу говорить, заработало у меня или нет. Но имейте ввиду, что если не заработало у меня, то это не значит, что не заработает у вас.

1. Первый способ — установка плагина

Самый простой способ для тех, у кого WordPress — это установить плагины, для этого предназначенные, например: Add Headers, If Modified Since или If Modified Since Header.

У меня ни один из этих плагинов не дал результата, не знаю почему. Может заработает у вас?

2. Второй способ — PHP код

Сервис last-modified.com , описанный выше, предлагает в файл header.php, в самое начало, поместить такой php код:

= $LastModified_unix) { header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified"); exit; } header("Last-Modified: ". $LastModified); ?>

Мне это тоже не помогло. Предлагаю так же попробовать разместить его в файле index.php в корне сайта, но мне и это не помогло.

3. Третий способ — запись в.htaccess

Если у вас сервер на Apache, то скорее всего у вас это заработает. Нужно в файл .htaccess в корне сайта вставить код:

RewriteRule .* - RewriteRule .* -

У меня не заработало, так как у меня стоит связка Ngnix + Apache и все эти манипуляции с.htaccess чаще всего не срабатывают.
После всех этих мучений подумал: а чего это я один мучаюсь? Напишу как в службу поддержки хостинга, там люди грамотные, может подскажут? Написал, сижу жду.

Пришел ответ от техподдержки:

Всё просто. Страницы вашего сайта генерируются php-скриптами которые не выдают браузеру этот заголовок.
Веб-сервер (nginx) для статических файлов (jpg, gif, css, js и т.д.) выдаёт в заголовке last-modified дату последнего изменения файла. Примеры на скриншотах.
Если у вас нет очень большой посещаемости сайта то кэшировать страницы сайта на стороне браузера нет смысла.

Один из этапов оптимизации интернет-сайта для его правильной работы и успешного продвижения — оптимизация на стороне сервера. Среди прочих моментов — настройка правильного ответа сервера на запрос «Last-Modified». Правильная настройка этого параметра может повлиять на увеличение скорости загрузки сайта и положительно скажется на его индексации поисковыми роботами.

Что такое Last-Modified и зачем он нужен?

Как видно из названия, заголовок Last-Modified говорит клиенту (посетителю сайта) о времени последнего изменения той или иной страницы сайта. Если в качестве посетителя сайта выступает поисковый робот и на сайте (на сервере) не настроен (или настроен неправильно) ответ Last-Modified на запрашиваемый документ или страницу, поисковому роботу ничего не остается, как производить индексацию всех страниц интернет-ресурса снова и снова при каждом посещении, таким образом создавая определенную нагрузку на сервер, расположенный на хостинг-площадке. А если количество страниц сотни или даже тысячи? В зависимости от характеристик и возможностей и сервера, существует вероятность «нарваться» на какую-нибудь ошибку со стороны хостинга. В дополнение к этому следует отметить, что поисковый робот имеет лимит на количество индексируемых «за раз» страниц, поэтому в случае отсутствия правильной настройки заголовка Last-Modified, мы рискуем тем, что неизмененные страницы проиндексируются роботом, а нужные нам новые страницы — нет.

Исходя из спецификации RFC 2616, описывающей протокол передачи гипертекста HTML, клиент может «спросить» у сервера, не изменилась ли страница с определенной даты, послав серверу заголовок «If-Modified-Since». Если запрашиваемая страница не изменилась, сервер возвратит заголовок «304 Not Modified» и браузер не будет загружать страницу, а web-сервер не будет отдавать много данных. В противном случае (если страница сайта изменялась со времени предыдущего запроса), сервер возвратит ответ «200 OK» и непосредственно код самой страницы.

В дополнение к вышесказанному упомянем рекомендации Яндекса: «Робот не сможет получить информацию о том, обновилась ли страница сайта с момента последнего индексирования. А так как число страниц, получаемых роботом с сайта за один заход, ограничено, изменившиеся страницы будут переиндексироваться реже» .

ИТОГО: важным назначением заголовка «Last-Modified» служит информирование посетителя сайта и поискового робота о дате последней модификации какого-либо документа.

Для чего нужна правильная настройка Last-Modified?

При помощи правильной настройки ответа сервера Last-Modified мы сможем достичь сразу несколько положительных результатов для нашего сайта:

  • Увеличивается скорость загрузки страницы сайта для людей: в случае, если страница уже была посещена пользователем и на момент следующего посещения страница не менялась, браузер посетителя не будет заново загружать страницу, а отобразит ее сохраненную в кеше копию;
  • Снижается нагрузка на хостинг-площадку (сервер): при таком алгоритме работы сервер будет загружаться гораздо меньше за счет необходимости передачи посетителю сайта объема только измененных страниц;
  • Отображается дата последнего документа в поисковой выдаче: этот факт может привлекать посетителей к вашему сайту, если будет отображаться «свежая» дата;
  • Сортировка по дате: страницы сайта примут участие в сортировке по дате в поисковой выдаче;
  • Существенно ускоряется индексация сайта поисковыми роботами: за счет быстрого ответа вашего сайта о дате сканируемых страниц, старые (уже проиндексированные) страницы будут «отбрасываться в сторону», уступая место «свежим» документам. Этот пункт является наиболее значимым при продвижении сайта , т.к. высокая скорость индексации повышает уровень доверия к сайту у поисковых роботов.

Как проверить, корректно ли настроен Last-Modified?

Один из сервисов, на котором можно проверить правильность (да и вообще существование) настроенного ответа сервера Last-Modified - одноименный last-modified.com

В поле ввода необходимо написать адрес вашего сайта или конкретной страницы и нажать на кнопку «Проверить». Результатом работы сервиса будет демонстрация ответа вашего сайта на запрос заголовков «Last-Modified» и «304 Not Modified». Пример такой проверки:

Настраиваем Last-Modified

Рассмотрим реализацию ответа HTTP-заголовка Last-Modified на PHP.

В интернете очень часто встречаются такие рекомендации по настройке Last-Modified:

Так и хочется воскликнуть: «Такой хоккей нам не нужен!» И давайте разберемся почему. В ответ на запрос пользователя функция gmdate вернет нам текущую дату по Гринвичу (GMT). И так будет происходить каждый раз при каждом запросе пользователя или поискового робота — сервер будет возвращать нам именно свою текущую дату . Получается, что при каждом посещении вашего сайта поисковиками, они будут видеть, что запрашиваемая страница только что обновлена. Это может быть «полезным» лишь несколько раз... Через некоторое время поисковик поймет, что его «дурят» и утратит какое-либо доверие к вашему сайту. Соответственно, такая реализация нам не подходит.

Обратимся за помощью к вышеупомянутому ресурсу last-modified.com . На нем также представлен вариант реализации HTTP-заголовка Last-Modified на PHP. Выглядит он следующим образом:

$LastModified_unix = 1294844676;

$IfModifiedSince = false;



if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
exit;
}

Давайте разберем работу этого кода. Переменная $LastModified_unix задается вручную в формате Unix Time Stamp (число секунд, прошедших с начала эпохи Юникс - с 1 января 1970 года).

Функция gmdate возвращает текущее время по Гринвичу в формате Day, DD Mon YEAR HH:MM:SS GMT .

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

В указанном выше варианте предлагается задавать время $LastModified_unix вручную. А что делать, если на сайте очень много страниц? Для этого немного «модернизируем» скрипт, заменив в нем всего лишь одну первую строчку:

$LastModified_unix = strtotime(date("D, d M Y H:i:s", filectime($_SERVER["SCRIPT_FILENAME"])));
$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);

В обновленном варианте первая строчка кода преобразует текстовое представление даты на английском языке в метку в формате Unix Time Stamp , таким образом используя автоматически вычисленное время изменения текущей страницы сайта.

Всё, готово! Теперь нам остается вставить получившийся код в раздел ... каждой страницы сайта и наслаждаться высокой скоростью загрузки страниц и их индексации поисковыми роботами.

Поможем с настройкой Last-Modified!

Начните с простого звонка в «Т-Дизайн»! Наш телефон — 8 499 340-17-82 — работает в режиме нон-стоп , чтобы вы могли оперативно получать интересующую вас информацию по решению задач развития и поддержки вашего сайта. Или пишите на электронную почту . Мы проконсультируем по всем вопросам и подберем оптимальный тариф для вашей компании.

Зачем настраивать заголовок Last-Modified. Давайте попробуем максимально быстро и просто разобраться с настройкой заголовка Last-Modified.

Для начала скажу, что это нужно в первую очередь для снижения нагрузки на сервер и ускорения индексации страниц. Именно поэтому необходимо произвести настройку заголовка Last-Modified, особенно для крупных ресурсов с большим количеством страниц.

Цель этого заголовка — сообщить клиенту (браузеру или поисковику) информацию о последних изменениях конкретной страницы. Клиент передает серверу заголовок If-Modified-Since. Если изменений на странице не обнаружено, то от сервера возвращается заголовок «304 Not Modified». При этом страница не загружается.

Если же изменения вносились, то это будет учтено, и сервер вернет заголовок «200 OK» (страница загрузится с обновленным содержимым).

Корректная настройка Last-Modified дает следующие преимущества:

  • в результатах поиска отображается дата последнего обновления содержимого страницы;
  • страницы при сортировке в поисковике по дате занимают более высокие позиции;
  • существенно ускоряется индексация страниц.
  • Почему же роботы быстрее индексируют сайты с настроенным Last-Modified?

    Ответ прост: если на сайте было изменено всего 20 страниц, то роботу не нужно индексировать все 500 в поисках нового контента, поскольку Last-Modified укажет страницы с изменениями.

    Last-Modified особенно важен для ресурсов с большим количеством страниц, ведь на обход каждого сайта роботу отводится ограниченное количество времени, и он может не успеть дойти до нужных страниц.

    Как настроить Last-Modified

    Для начала необходимо проверить, настроен ли у вас этот заголовок. Для этого можно использовать сервисы varvy.com , last-modified.com или tools.seo-auditor.com.ru . Если проверка показала отсутствие заголовка, то следует приступить к его настройке.

    Если у вас статический сайт, то для каждой страницы необходимо прописать код, который вы видите на экране:

    После каждого изменения содержимого вручную изменяем дату в коде. И что, каждый раз так, спросите вы меня? Да, если сайт статический.

    Если сайт динамический, то используем настройку в PHP. Часто встречается вот такой код:

    header(«Last-Modified: » . date(‘r’,strtotime($post->post_modified)))

    Его необходимо добавить в header.php. Но он будет работать только для записей и страниц и не будет срабатывать на главной. Также он недействителен для таксономий, архивов и учета новых комментариев.

    $LastModified_unix = 1294844676;

    $Last Modified = 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’);

    header(‘Last-Modified: ‘ . $LastModified);

    Также можно настроить заголовок, прописав две строки в файле.htaccess:

    RewriteRule .* —

    RewriteRule .* —

    Но в этом случае необходимо проверить, не возникнет ли проблем со стороны хостинга.

    Чтобы не прописывать коды, можно использовать готовые решения для настройки Last-Modified. Например, для CMS WordPress есть плагины Clearfy и Last Modified Timestamp. Настройку можно выполнить с помощью плагина WP Super Cache. Для этого в расширенных настройках активируйте пункт «Ошибка 304» (поддержка ответа 304 отключена по умолчанию, так как на некоторых хостингах могут возникать проблемы). Для других CMS также существуют свои плагины, ну или в крайнем случае, можно заказать плагин у программиста.

    Следует понимать, что настройка Last-Modified не всегда полезна (например, когда на каждой странице установлен «сквозной» блок информации с регулярно меняющимся контентом одинакового содержания). В этом случае поисковики могут перестать воспринимать информацию как новую и станут реже посещать ваш сайт.

    В остальных случаях, настроив Last-Modified, вы получаете:

    • экономию трафика;
    • ускоряете работу сайта;
    • выполняете рекомендации поисковиков Google и Яндекс, что значительно ускоряет индексацию и повышает видимость страниц в поиске. Особенно хорошо это заметно на ресурсах с большим количеством страниц.