Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Разбор

Код 304 и условные запросы

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

Что означает код 304 и в каком контексте он появляется

Код 304 «Не изменено» возвращается сервером в ответ на условный запрос, когда клиент — браузер или поисковый робот — уже располагает предыдущей версией содержимого страницы и спрашивает, изменилось ли оно с прошлого обращения, а сервер подтверждает: нет, содержимое осталось прежним, повторно скачивать его не нужно.

Механизм условного запроса пошагово

  1. Клиент, ранее уже получавший содержимое страницы, сохраняет технические метаданные о полученной версии — например, значения заголовков, разобранных в отдельной статье этой серии.
  2. При повторном обращении клиент передаёт эти сохранённые метаданные серверу в специальных условных заголовках запроса.
  3. Сервер сравнивает переданные метаданные с текущим фактическим состоянием содержимого и решает, действительно ли что-то изменилось с прошлого визита.
  4. Если изменений нет — сервер отвечает кодом 304 без пересылки самого содержимого страницы повторно, экономя канал передачи данных.

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

Технические условия, необходимые для корректной работы механизма

Чтобы условные запросы и код 304 действительно работали, сервер должен корректно поддерживать соответствующие технологии на своей стороне — правильно генерировать и сравнивать заголовки, разобранные в отдельной статье этой серии, а не игнорировать условные запросы клиента и всегда отдавать полное содержимое страницы с кодом 200 независимо от того, изменилось оно или нет.

Как проверить, действительно ли сайт использует эту возможность

Инструменты разработчика браузера позволяют посмотреть на реальный код ответа при повторном обращении к уже загруженной ранее странице — если сервер корректно настроен, повторный запрос вернёт именно код 304 для неизменившегося содержимого, а не полный код 200 с повторной пересылкой всего содержимого страницы заново.

Разница между кодом 304 и полным кешированием на стороне клиента без обращения к серверу

Стоит отличать код 304, всё ещё предполагающий обращение к серверу для проверки актуальности содержимого, от полного клиентского кеширования, при котором браузер вовсе не обращается к серверу повторно в течение определённого срока — оба механизма экономят ресурсы, но по-разному и в разных технических ситуациях, дополняя, а не заменяя друг друга.

Чек-лист

  1. Убедиться, что сервер сайта корректно поддерживает условные запросы и код 304.
  2. Проверять реальную работу механизма через инструменты разработчика браузера.
  3. Рассматривать корректную поддержку 304 как способ более эффективного использования бюджета обхода.
  4. Понимать разницу между кодом 304 и полным клиентским кешированием без обращения к серверу.

Практическая польза механизма и для обычных повторных посетителей

Помимо чисто технической выгоды для поискового робота, тот же самый механизм условных запросов и кода 304 одинаково полезен и для обычных повторных посетителей сайта — их браузер точно так же экономит время и объём передаваемых данных при повторном посещении уже знакомых, не изменившихся страниц, что улучшает субъективное восприятие скорости работы сайта в целом.

Типичная ошибка реализации, сводящая пользу механизма на нет

Если сервер технически поддерживает условные запросы, но некорректно сравнивает переданные метаданные с фактическим состоянием содержимого — например, всегда отдаёт полное содержимое независимо от совпадения меток, — сам факт формальной поддержки протокола не приносит никакой реальной экономии ресурсов, что делает важной именно практическую проверку результата, а не одно только наличие соответствующей технической настройки в конфигурации.

Особая эффективность механизма для статических ресурсов сайта

Изображения, файлы стилей оформления и скрипты, меняющиеся значительно реже, чем основной текстовый контент страниц, особенно выигрывают от корректно настроенных условных запросов — для таких ресурсов доля запросов, завершающихся кодом 304 вместо полной повторной передачи, обычно заметно выше, чем для активно обновляемого текстового содержимого страниц.

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

Что означает код ответа 304 и когда он возвращается?

Код «Не изменено» возвращается сервером в ответ на условный запрос, когда клиент уже располагает предыдущей версией содержимого страницы, а сервер подтверждает, что содержимое с прошлого обращения не изменилось.

Как код 304 помогает экономить бюджет обхода сайта?

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

Как проверить, действительно ли сайт использует условные запросы и код 304?

Через инструменты разработчика браузера — при повторном обращении к уже загруженной странице корректно настроенный сервер должен вернуть код 304, а не полный код 200 с повторной пересылкой всего содержимого.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также

4 мин чтения

Заголовки Last-Modified и ETag

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

Читать статью →
4 мин чтения

Время ответа сервера и бюджет обхода

Помимо прямого влияния на удобство обычных посетителей, скорость ответа сервера имеет и менее очевидное, но не менее значимое влияние — на объём страниц, которые поисковый робот успевает обойти.

Читать статью →
4 мин чтения

Таймауты и обрывы соединения при сканировании

Завершая тему кодов ответа и доступности сайта, разберём ситуацию даже более фундаментальную, чем некорректный код ответа, — полное отсутствие ответа или обрыв соединения посреди его получения.

Читать статью →