Проверка и настройка заголовка Last Modified

Все способы проверить и установить заголовок Last Modified: с помощью кэширования, без плагина, отдельным WordPress модулем и плагином Clearfy Pro.

Проверьте работу Last-Modified и 304 Not Modified на вашем сайте онлайн.

Что такое заголовок Last Modified?

Один из HTTP-заголовков, который содержит в себе дату последнего изменения страницы. Данный заголовок отправляется сервером и не виден посетителям.

Пример заголовков, которые отправляет сервер, среди которых есть Last-Modified.

Last-Modified: Mon, 05 Apr 2021 11:39:13 GMT
Server: nginx-reuseport/1.13.4
Date: Tue, 13 Apr 2021 20:31:23 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=30

Предположим, посетитель просматривает статью на вашем блоге, которая в заголовках отдала ласт модифай. Браузер увидев заголовок сохраняет в кеш данную страницу (код HTML, изображения, таблицы стилей CSS).

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

Этот заголовок работает в паре с If Modified Since, что это и какие преимущества дает ниже.

Что такое If Modified Since?

Это заголовок, который спрашивает ваш сервер, изменилась ли страница за это время?

Поисковая система или браузер посылают повторный запрос на ваш сайт с HTTP заголовком If-Modified-Since, в котором указывают метку времени. После этого ресурс должен проверить, менялась ли страница за это время и дать ответ.

  • 304 Not Modified, если страница не менялась и завершить вывод.
  • 200 ОК, если страница менялась и показать свежую версию страницы.

Что это дает?

Снижение нагрузки на сервер.

Когда возвращается ответ 304, сама страница не загружается. Условно мы говорим — страница не менялась, возьмите ту, что у вас уже сохранена.

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

Ускорение индексации сайта.

Когда поисковой робот Яндекс или Google приходит на сайт и получает ответ 304 Not Modified на заголовок If-Modified-Since — он пропускает эту страницу и переходит к следующей.

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

Как добавить и настроить Last Modified?

Все зависит от технологий и языков программирования, которые используются на сайте.

.htaccess

❌ Правильных и надежных способов установить Last-Modified через .htaccess нет.

PHP

Самый простой вариант, если вы не используете CMS.

Работает только для простых сайтов на PHP, возвращает дату модификации файла getlastmod(), либо вы можете заменить ее на свою.

Если вы разработчик — можно данный код внедрить в Bitrix или ModX.

$modified_date = getlastmod();
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $modified_date).' GMT');

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $modified_date) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
}

WordPress без плагина

Код будет похож на тот, что выше, но с учетом даты модификации записей в вордпресс.

Код необходимо добавить в header.php.

⚠️ Не лучшее решение, правильные смотрите ниже.

$modified_date = strtotime( $post->post_modified_gmt );
header( 'Last-Modified: '.gmdate('D, d M Y H:i:s', $modified_date).' GMT' );

if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime( $_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $modified_date ) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
}

WordPress в плагине кеширования

В плагине WP Super Cache можно включить опцию "Кеширование браузера 304" на вкладке Расширенные.

⚠️ Если не используете этот плагин — не устанавливайте ради Last Modified com, ниже будет решение лучше.

Страница настроек плагина WP Super Cache

WordPress плагин Clearfy Pro

Наиболее полное и правильное решение с поддержкой комментариев и рубрик.

✅ Работает в рубриках
✅ Учитывает свежие комментарии
✅ Можно добавить исключения
✅ Активация в 1 клик
✅ Более 50 улучшений для сайта

➡️ Подробнее о плагине

Настройки плагина Clearfy Pro

Что делать, если Last Modified не работает?

Первым делом нам необходимо исключить влияние CMS и проверить работают ли Last-Modified и If-Modified-Since на PHP. Для этого:

  1. Скачайте архив и разархивируйте.
  2. Залейте файл test.php в корень вашего сайта.
  3. И отправьте ссылку на этот файл на повторную проверку.

Если результат будет опять отрицательный — значит на вашем хостинге эти заголовки отключены. Что можно сделать?

  1. Напишите в техподдержку хостинга, укажите ссылку на созданный файл и сообщите, что заголовок Last-Modified не отдается клиенту.
  2. Если вы используете ISPmanager, попробуйте отключить SSI.
  3. Для NGINX в файл конфигурации нужно добавить ssi_last_modified on;

Нужны ли серверные заголовки сейчас?

Однозначно да! Мы об этом говорили выше, давайте коротко резюмируем:

  • Более быстрая и полная индексация сайта.
    За счет того, что часть страниц уже будет отдавать 304 ответ, Яндекс и Google будут обходить больше новых страниц за один раз.
  • Быстрая загрузка
    За счет того, что браузер кеширует страницу — она будет показана моментально и пользователю не придется ждать загрузки.
  • Снижение нагрузки на сервер
    Благодаря тому, что при 304 ответе страница не загружается, нагрузка на ваш хостинг будет меньше.
2021

Рекомендации

Сохраните в закладки
Чтобы не потерять страницу и всегда иметь под рукой инструмент проверки.
🚀
Плагин для WordPress, который добавляет Last-Modified и не только. Более 50 улучшений вашего сайта.
📌
Это букмарклет. Перенесите эту ссылку в избранное, теперь вы сможете в 1 клик проверить открытый сайт.