Проверка Last-Modified и 304

Введите адреса — запросим каждую страницу дважды: обычным запросом и условным, как это делает робот. Правильно настроенный сервер во второй раз отвечает 304.

Запрос с нашего сервера Без регистрации До 10 адресов за раз
Каждую страницу запрашиваем до трёх раз: обычным запросом, с заголовком If-Modified-Since и с If-None-Match. Так поступает поисковый робот, когда приходит на страницу повторно.

Заголовки и условные запросы

Введите адреса и нажмите «Проверить»

Зачем нужны Last-Modified и ответ 304

Поисковый робот приходит на страницу снова и снова. Если страница не менялась, качать её целиком — пустая трата времени и для робота, и для сервера. Поэтому протокол HTTP предусматривает условный запрос: робот сообщает «у меня есть версия от такого-то числа», и сервер отвечает коротким 304 Not Modified вместо всей страницы.

У робота ограниченный лимит обхода на сайт. Когда неизменившиеся страницы отвечают 304, робот тратит лимит на новые и обновлённые. Для больших каталогов это заметно ускоряет попадание новых товаров в индекс. Яндекс прямо рекомендует настраивать Last-Modified.

Как это работает

ЗаголовокКто отправляетСмысл
Last-ModifiedСерверДата последнего изменения страницы
If-Modified-SinceРобот при повторном запросе«Пришли, только если изменилась после этой даты»
ETagСерверОтпечаток версии страницы
If-None-MatchРобот при повторном запросе«Пришли, только если отпечаток другой»
304 Not ModifiedСервер«Не менялась, бери свою копию» — без тела страницы

Частые ошибки

  • Last-Modified нет вовсе. Динамические страницы на CMS часто его не отдают — роботу приходится каждый раз скачивать страницу целиком.
  • Дата всегда текущая. Сервер ставит в Last-Modified время запроса. Формально заголовок есть, а 304 не будет никогда.
  • Заголовок есть, а 304 нет. Сервер сообщает дату, но условный запрос игнорирует и отвечает 200.
  • 304 при изменённой странице. Самая опасная ошибка: дата не обновляется при правке, и робот годами видит старую версию. Проверьте: поменяйте текст и убедитесь, что дата сдвинулась.

Для статических файлов — стилей, скриптов, картинок — веб-сервер обычно настраивает всё сам. Для страниц, которые собирает CMS, заголовок нужно включать в настройках или модулем: в 1С-Битрикс, WordPress и других для этого есть готовые решения.

Частые вопросы

Не нашли ответ? Напишите в Telegram

Нужен ли ETag, если есть Last-Modified?

Достаточно одного. Яндекс и Google понимают оба. ETag удобнее, когда точную дату изменения посчитать трудно.

Страница отвечает 304 — значит, всё правильно?

Почти. Убедитесь, что дата меняется, когда меняется страница. Иначе робот не увидит обновлений.

Почему у главной даты нет, а у картинок есть?

Файлы отдаёт веб-сервер, и он сам знает дату их изменения. Страницы собирает CMS — и если её не настроить, заголовка не будет.

Может ли Last-Modified навредить?

Только если он врёт: например, не обновляется при правке страницы. Тогда изменения дойдут до поиска с опозданием.

Сделано практиком

Новые страницы долго попадают в индекс?

Правильные Last-Modified и 304 помогают роботу тратить обход на новое. Напишите — настроим сервер и обход сайта.