HTTP хедъра Last-Modified ускорява индексацията на нови страници

5/5 - (6 гласа)
304 статус код

HTTP хедъра Last-Modified (последно променен) предава на клиента времето на последната промяна на дадена уеб страница. Клиентът (браузър или бот ) изпраща на сървъра хедър “if-Modified-Since” и ако датата на последната промяна на страницата съвпада, сървърът връща заглавието “304 Not Modified ” и не рендира наново страницата. Ако времето за последната промяна е различно (или last modified header не е конфигуриран) — сървърът връща заглавието “200 OK” и зарежда страницата. Това означава, че вместо да рестартирате страницата и да актуализира кеша, клиентът получава само заглавие 304. Клиентът спестява трафик, а сървърът дава изпраща по-малко данни и спестява от натоварването от обработката на много ресурси.

Тази статия основно е за предимствата, които носи за SEO настройката на правилните HTTP хедъри и по-точно за ускоряване на индексирането на сайта. Ясно е, че правилната настройка на кодовете на отговор на сървъра, може многократно да увеличи броят обходени и съответно индексирани страници в даден сайт. Същият принцип, който ви позволява да оптимизирате зареждането на страници работи и за индексиране. Ботът не трябва да обходи 1000 страници, за да намери 10 нови страници, ако са извършени правилните настройки. Благодарение на last modified, ние оставяме за ботовете само нови страници (или вече актуализирани такива). Ботът идва на сайта и първо взема това, което е необходимо, а след това всичко останало.

Да, подобно на Sitemap xml, заглавията на last-modified са препоръки, а не стриктно ръководство за действие и търсачките все още ще обхождат и проверяват дори старите страници, но вече в различен ред. Освен това, ако резултатите в Google търсенето и снипетите на сайта показват дата, това може да увеличи CTR на сайта.

Настройка на Last-Modified

Големите търсачки препоръчват на уебмастърите да използват настройка на хедърите, за да ускорят индексирането или да намалят натоварването на сървърите си. Ето какво пишат търсачките в ръководствата си за това.

Превод от страниците за поддръжка на Google:

Уверете се, че вашият уеб сървър поддържа HTTP заглавката “if-Modified-Since”. Това заглавие ще позволи на уеб сървъра да каже на Google дали съдържанието на сайта се е променило от последното сканиране. Поддръжката на тази функция намалява разходите и натоварването на честотната лента.

Как да конфигурирате meta Last-Modified за статични html страници

<meta http-equiv="Last-Modified" content="Sun, 11 Sep 2001 17:31:28 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

Когато този статус код и коректното му изпращане е настроено, добре е да бъде направена външна проверка за изправност. Проверете Last-Modified на вашия собствен или чужд сайт, например с този онлайн инструмент.

Възможно е да направите и програмна проверка, ползвайки curl:

<?php
$ch = curl_init();

 $url = 'http://site.ru/1.php ';

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, true);
 curl_setopt($ch, CURLOPT_NOBODY, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array(
 'If-Modified-Since: Sun, 01 Sep 2001 17:33:22 GMT'
 ));

 ob_start();
 curl_exec ($ch);
 curl_close ($ch);
 $data = ob_get_contents();
 ob_end_clean();

 echo nl2br($data);
?>

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

Дори и уеб сайтът да е на друга платформа, съществуват решения за настройка на хедърите. В примера по-долу, може да видите как изглежда от страна на сървъра изпращането на ресурси, които не са били променени. Ясно си личи, че количеството предадена информация е много по-малко, което води до оптимизация на целия процес по зареждане на даден уеб сайт.