Как настроить заголовок Last-Modified
Заголовок Last-Modified - это http-заголовок с датой и временем последнего изменения страницы, который помогает оптимизировать загрузку web-страниц и облегчить работу поисковым роботам. Это необязательный для заполнения заголовок, но боты смотрят его, когда индексируют страницу, для понимания, есть ли смысл посещать ее повторно.
Шаблон заголовка Last-Modified:
Last-Modified: <день недели>, <число> <название месяца> <год> <час>:<минута>:<секунда> GMT
Пример заголовка:
Last-Modified: Sun, 16 Oct 2023 07:00:00 GMT
Алгоритм работы заголовка такой: поисковой робот «спрашивает» у сервера – не изменилась ли страница с определенной даты. Если страница изменилась – сервер возвращает страницу как обычно (возвратит 200 ОК и будет загружать новое содержимое страницы), если изменений не было возвращает только заголовок «304 Not Modified».
Чем полезен Last-modified
Сократит нагрузку роботам и ускорит индексацию. Число страниц, которые поисковый робот может проанализировать за один заход, ограничено. А с заголовком Last-modified бот сможет расставить приоритеты.
Отобразить новую дату материала и страницы сайта будут участвовать в сортировке по датам в выдаче поисковика.
Ускорить загрузку и сэкономить трафик, так как страницы, которые никак не поменялись с последнего обращения, загрузятся из кэша.
Снизить нагрузку на сервер, потому что серверу нужно будет передавать пользователю только те страницы, которые изменились.
Как настроить Last-modified
Если сайт статический, то на каждой странице необходимо указать Last-Modified с датой последнего изменения. А после обновлений менять дату вручную:
<meta http-equiv="Last-Modified" content="Sun, 16 Oct 2023 07:00:00 GMT">
У популярных CMS есть готовые решения, например:
-
WordPress — плагины Clearfy, WP Super Cache и другие;
-
Drupal — модуль lastmodified_since;
-
Joomla — модуль Last Modified Any.
Если страница сайта динамичная, то отправить заголовок с помощью php можно следующим образом:
$unixPageDateCreate = filectime($_SERVER['SCRIPT_FILENAME']);
if (!empty($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$request = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
if (!empty($request) && $request >= $unixPageDateCreate) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit();
}
}
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $unixPageDateCreate) . ' GMT');
Как проверить Last-Modified
Проверить отдает ли ваш сайт заголовок Last-Modified можно с помощью сервиса last-modified.com/ru/ или в код-инспекторе вашего браузера.