Проверка Last-Modified и 304
Введите адреса — запросим каждую страницу дважды: обычным запросом и условным, как это делает робот. Правильно настроенный сервер во второй раз отвечает 304.
Зачем нужны 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 помогают роботу тратить обход на новое. Напишите — настроим сервер и обход сайта.