Что означает код 304 и в каком контексте он появляется
Код 304 «Не изменено» возвращается сервером в ответ на условный запрос, когда клиент — браузер или поисковый робот — уже располагает предыдущей версией содержимого страницы и спрашивает, изменилось ли оно с прошлого обращения, а сервер подтверждает: нет, содержимое осталось прежним, повторно скачивать его не нужно.
Механизм условного запроса пошагово
- Клиент, ранее уже получавший содержимое страницы, сохраняет технические метаданные о полученной версии — например, значения заголовков, разобранных в отдельной статье этой серии.
- При повторном обращении клиент передаёт эти сохранённые метаданные серверу в специальных условных заголовках запроса.
- Сервер сравнивает переданные метаданные с текущим фактическим состоянием содержимого и решает, действительно ли что-то изменилось с прошлого визита.
- Если изменений нет — сервер отвечает кодом 304 без пересылки самого содержимого страницы повторно, экономя канал передачи данных.
Прямая практическая польза для бюджета обхода сайта. Когда поисковый робот эффективно использует условные запросы и получает быстрый ответ 304 для неизменившихся страниц, он экономит ресурсы, которые иначе потратил бы на скачивание и обработку неизменного содержимого, — это высвобождает часть общего бюджета обхода сайта для более частого посещения действительно обновившихся страниц.
Технические условия, необходимые для корректной работы механизма
Чтобы условные запросы и код 304 действительно работали, сервер должен корректно поддерживать соответствующие технологии на своей стороне — правильно генерировать и сравнивать заголовки, разобранные в отдельной статье этой серии, а не игнорировать условные запросы клиента и всегда отдавать полное содержимое страницы с кодом 200 независимо от того, изменилось оно или нет.
Как проверить, действительно ли сайт использует эту возможность
Инструменты разработчика браузера позволяют посмотреть на реальный код ответа при повторном обращении к уже загруженной ранее странице — если сервер корректно настроен, повторный запрос вернёт именно код 304 для неизменившегося содержимого, а не полный код 200 с повторной пересылкой всего содержимого страницы заново.
Разница между кодом 304 и полным кешированием на стороне клиента без обращения к серверу
Стоит отличать код 304, всё ещё предполагающий обращение к серверу для проверки актуальности содержимого, от полного клиентского кеширования, при котором браузер вовсе не обращается к серверу повторно в течение определённого срока — оба механизма экономят ресурсы, но по-разному и в разных технических ситуациях, дополняя, а не заменяя друг друга.
Чек-лист
- Убедиться, что сервер сайта корректно поддерживает условные запросы и код 304.
- Проверять реальную работу механизма через инструменты разработчика браузера.
- Рассматривать корректную поддержку 304 как способ более эффективного использования бюджета обхода.
- Понимать разницу между кодом 304 и полным клиентским кешированием без обращения к серверу.
Практическая польза механизма и для обычных повторных посетителей
Помимо чисто технической выгоды для поискового робота, тот же самый механизм условных запросов и кода 304 одинаково полезен и для обычных повторных посетителей сайта — их браузер точно так же экономит время и объём передаваемых данных при повторном посещении уже знакомых, не изменившихся страниц, что улучшает субъективное восприятие скорости работы сайта в целом.
Типичная ошибка реализации, сводящая пользу механизма на нет
Если сервер технически поддерживает условные запросы, но некорректно сравнивает переданные метаданные с фактическим состоянием содержимого — например, всегда отдаёт полное содержимое независимо от совпадения меток, — сам факт формальной поддержки протокола не приносит никакой реальной экономии ресурсов, что делает важной именно практическую проверку результата, а не одно только наличие соответствующей технической настройки в конфигурации.
Особая эффективность механизма для статических ресурсов сайта
Изображения, файлы стилей оформления и скрипты, меняющиеся значительно реже, чем основной текстовый контент страниц, особенно выигрывают от корректно настроенных условных запросов — для таких ресурсов доля запросов, завершающихся кодом 304 вместо полной повторной передачи, обычно заметно выше, чем для активно обновляемого текстового содержимого страниц.
Частые вопросы
Что означает код ответа 304 и когда он возвращается?
Код «Не изменено» возвращается сервером в ответ на условный запрос, когда клиент уже располагает предыдущей версией содержимого страницы, а сервер подтверждает, что содержимое с прошлого обращения не изменилось.
Как код 304 помогает экономить бюджет обхода сайта?
Поисковый робот, получающий быстрый ответ 304 для неизменившихся страниц, экономит ресурсы, которые иначе потратил бы на скачивание и обработку неизменного содержимого, высвобождая часть бюджета обхода для действительно обновившихся страниц.
Как проверить, действительно ли сайт использует условные запросы и код 304?
Через инструменты разработчика браузера — при повторном обращении к уже загруженной странице корректно настроенный сервер должен вернуть код 304, а не полный код 200 с повторной пересылкой всего содержимого.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.