Проверка Last-Modified
Узнайте, сообщает ли сервер дату изменения страницы и отвечает ли корректным кодом 304 на условный запрос.
Что такое Last-Modified
Last-Modified — стандартный HTTP-заголовок ответа с датой и временем последнего существенного изменения ресурса. Это валидатор кэша: браузер, CDN или поисковый робот может уточнить, изменилась ли страница, не загружая весь HTML повторно.
Это не дата публикации и не декоративная надпись «обновлено» внутри страницы. Значение формируется сервером и передаётся в формате HTTP-date, обычно по UTC:
HTTP/1.1 200 OK Last-Modified: Fri, 17 Jul 2026 12:40:00 GMT ETag: "article-1842-v7"
If-Modified-Since.304 без HTML либо 200 с новой версией.Как выглядит повторная проверка
GET /page/ HTTP/1.1 If-Modified-Since: Fri, 17 Jul 2026 12:40:00 GMT HTTP/1.1 304 Not Modified Last-Modified: Fri, 17 Jul 2026 12:40:00 GMT
Важно: наличие заголовка ещё не означает, что механизм работает. Сервер должен обработать условный запрос и при неизменном документе вернуть 304 без тела ответа — именно это проверяет сервис.
Что говорит Google
В документации по эффективности сканирования Google сообщает, что его роботы в целом поддерживают If-Modified-Since и If-None-Match. Если сервер возвращает 304 без тела, Google повторно использует ранее загруженную версию.
«This will save your server processing time and resources, which may indirectly improve crawl efficiency.»
Перевод: это экономит время и ресурсы сервера, что может косвенно повысить эффективность сканирования. Источник: Google Search Central — HTTP-коды и изменения контента.
Отдельно о Sitemap Google пишет:
«Google uses the <lastmod> value if it's consistently and verifiably accurate.»
То есть дата учитывается, если она стабильно точна и её можно проверить по фактическим изменениям страницы. Google рекомендует отражать последнее существенное обновление: основного контента, структурированных данных или важных ссылок. Простая смена года в копирайте существенным обновлением не считается. Источник: Google Search Central — XML Sitemap.
Преимущества
- Меньше трафика: при
304не передаётся тело HTML. - Ниже нагрузка: серверу и CDN не нужно заново отдавать неизменившийся документ.
- Эффективнее обход: особенно полезно крупным сайтам с большим числом URL.
- Корректная ревалидация кэша: браузеры и промежуточные кэши быстрее проверяют актуальность.
- Сигнал свежести: точная дата помогает отличить обновлённую версию от прежней.
Чего Last-Modified не делает
- не повышает позиции сам по себе;
- не гарантирует повторный обход или индексацию;
- не заменяет качественный контент, внутренние ссылки и Sitemap;
- не исправляет запрет в
robots.txtилиnoindex; - не сообщает поисковику, что именно изменилось.
Главные подводные камни
| Ошибка | Почему это плохо | Как сделать правильно |
|---|---|---|
| Всегда ставится текущая дата | Каждый запрос выглядит как обновление, кэш теряет смысл, робот получает ложный сигнал. | Брать время последнего существенного изменения из БД, файла или CMS. |
| Дата не меняется после правки | Сервер может ошибочно вернуть 304, и клиент продолжит использовать старую версию. | Обновлять дату при изменении основного текста, данных, разметки или важных ссылок. |
| Меняется из-за меню, счётчика или копирайта | Тысячи страниц выглядят обновлёнными без изменения их основного содержания. | Не связывать дату материала со временем сборки общего шаблона. |
| Дата из будущего | Причиной бывают часовой пояс или неверные часы сервера; кэширование становится непредсказуемым. | Синхронизировать часы и отдавать HTTP-date в GMT. |
| HEAD и GET отвечают по-разному | Некоторые серверы добавляют заголовок только в один тип ответа. | Проверить оба метода и конечный URL после редиректов. |
| CDN меняет или удаляет заголовок | Приложение настроено верно, но пользователь и робот видят ответ прокси. | Проверять публичный ответ, правила CDN и reverse proxy. |
| Точности до секунды недостаточно | Две правки в одну секунду могут иметь одинаковую дату. | Дополнительно применять ETag, особенно для динамических данных. |
| 304 возвращается с HTML-телом | Это нарушает назначение ответа и не даёт экономии трафика. | Для 304 не формировать тело документа. |
HTTP Last-Modified и <lastmod> в Sitemap — не одно и то же
Last-Modified находится в HTTP-ответе и участвует в условных запросах. <lastmod> записывается в sitemap.xml и подсказывает поисковой системе дату существенного обновления URL. Лучше, чтобы оба значения опирались на один источник данных, но формат может отличаться.
Google прямо указывает, что значения <priority> и <changefreq> игнорируются, а точный <lastmod> может использоваться. Отправка Sitemap остаётся подсказкой, а не гарантией обхода.
Практический чек-лист
- Дата соответствует последнему значимому изменению конкретной страницы.
- Значение не обновляется при каждом запросе и не зависит только от общего шаблона.
- Формат HTTP-заголовка корректен, время передаётся в GMT.
- Запрос с
If-Modified-Sinceполучает304, если документ не менялся. - После реального обновления сервер возвращает
200 OKи новое содержимое. - Проверен конечный канонический URL после всех редиректов.
- CDN, кеширующий прокси и веб-сервер отдают согласованные заголовки.
<lastmod>в Sitemap не содержит фиктивную сегодняшнюю дату.- Для динамических страниц при необходимости используется
ETag.
Итог: корректный Last-Modified полезен прежде всего для кэширования и рационального сканирования. Для небольшого сайта эффект может быть незаметен, а для крупного каталога, СМИ или сайта с сотнями тысяч URL экономия ресурсов становится существенной.