Как ускорить индексацию новых страниц в разы. Last-Modified и If-Modified-Since

Как ускорить индексацию новых страниц в разы. Last-Modified и If-Modified-Since

Заветная мечта многих оптимизаторов — быстрая индексация страниц сайтов поисковыми роботами. Для этого создаются карты сайтов, файлы sitemap. xml, делается внутренняя перелинковка страниц и т. д. Сегодня поговорим о важной технической особенности сайт, которая может кардинально изменить скорость индексации страниц на вашем сайте. А конкретно об HTTP заголовке Last-Modified.

Как работает Last-Modified

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

В чем польза для SEO?

Всегда работает правило: 100 страниц будут загружаться и индексироваться поисковиками быстрее чем 1000. Мы облегчаем работу роботам и даем им сначала нужные страницы, а потом уже все остальные на его усмотрение.

Как и sitemap xml, заголовки last-modified это рекомендация, а не жесткое правило и поисковые роботы также будут индексировать старые страниц, но уже в порядке, который нужен нам. А если в результатах поиска рядом со страницами сайта будет показываться дата, это повысит CTR страницы в поисковой выдаче, что положительно скажется на поведенческих факторах ранжирования сайта.

Инструкция по настройке заголовка Last-Modified

Крупные поисковые системы рекомендуют вебмастерам использовать обработку заголовков для ускорения индексации или сокращения нагрузки. Вот, что по этому поводу пишут поисковики в своих руководствах.

Руководство по индексированию Яндекса:

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

Рекомендации веб-мастерам от Google:

Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок «If-Modified-Since». Этот заголовок позволит веб-серверу сообщать Google, изменился ли контент сайта со времени последнего сканирования. Поддержка этой функции сокращает издержки и нагрузку на полосу пропускания.

Пример настройки last-modified и If-Modified-Since

Как настроить Last-Modified для статичных html страниц
<meta http-equiv="Last-Modified" content="Fri, 15 Sep 2017 10:01:01 GMT">
Как настроить Last-Modified в php
<?php
$LastModified_unix = 1294844676;
$LastModified = gmdate("D, d M Y H:i:s GMT", $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);
?>
Как настроить Last-Modified .htaccess
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
Как настроить 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.com

Настройка заголовка Last-Modified и обработка заголовка If-Modified-Since нужна всем без исключения крупным сайтам. Особенно это важно для проектов, у которым контент обновляется ежедневно: СМИ, социальные сети, различные агрегаторы. СМИ важно, чтобы новостные публикации появлялись в поиске максимально быстро. Это даст не только дополнительный трафик, но и улучшит поведенческие факторы — люди и роботы будут больше ценить те сайты, которые поставляют им актуальный контент максимально быстро.

Задавайте вопросы и подписывайтесь на полезную рассылку!