Заголовок 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 есть готовые решения, например:

Если страница сайта динамичная, то отправить заголовок с помощью 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/ или в код-инспекторе вашего браузера.