304
Не критично — устраняется самостоятельно

Ошибка 304 — HTTP-статусы

Что это значит

Код 304 Not Modified — это HTTP-статус, который сервер отправляет в ответ на условный GET-запрос (с заголовками If-Modified-Since или If-None-Match). Он означает, что запрошенный ресурс не изменился с момента последней загрузки, поэтому сервер не передаёт тело ответа, а клиент (браузер или кеширующий прокси) использует сохранённую локальную копию. Пользователь видит страницу или файл как обычно, но трафик и время загрузки сокращаются. Технически это часть механизма кеширования HTTP, позволяющая снизить нагрузку на сервер и ускорить работу веб-приложений.

Вероятные причины

  • Ресурс действительно не изменился с момента последнего запроса
  • Клиент отправил корректные условные заголовки (If-Modified-Since, If-None-Match)
  • Сервер поддерживает условные запросы и правильно сравнивает даты/ETag
  • Настроены заголовки кеширования (Cache-Control, Expires, Last-Modified, ETag)
  • Прокси-сервер или CDN корректно обрабатывают кеширование
  • Браузер сохранил кеш и повторно использует его
  • Сервер возвращает 304 даже при изменении ресурса из-за неверной настройки ETag
  • Проблемы с синхронизацией времени между клиентом и сервером

Что делать — по порядку

  1. Проверить, что страница или файл действительно не изменились (сравнить содержимое)
  2. Очистить кеш браузера и повторить запрос (Ctrl+F5 или через инструменты разработчика)
  3. Проверить заголовки ответа сервера (Last-Modified, ETag, Cache-Control) через инструменты разработчика браузера
  4. Убедиться, что сервер правильно обрабатывает условные запросы (тест с curl: curl -I -H 'If-Modified-Since: ...' URL)
  5. Проверить настройки кеширования на сервере (например, в .htaccess, nginx.conf или web.config)
  6. Если используется CDN, проверить его настройки кеширования и инвалидации
  7. Проверить синхронизацию времени на сервере и клиенте (ntp)
  8. При необходимости отключить условные запросы на стороне сервера (не рекомендуется)

Нажимайте на пункты, чтобы отмечать выполненные.

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

Почему я вижу 304 в консоли браузера, но страница не обновляется?

Это нормально: 304 означает, что сервер сказал «кеш актуален», и браузер показал старую версию. Чтобы принудительно обновить, используйте Ctrl+F5.

Как отключить кеширование и всегда получать 200?

Добавьте заголовок Cache-Control: no-cache в ответ сервера. Но это увеличит нагрузку и время загрузки.

304 — это ошибка?

Нет, это успешный статус. Он означает, что ресурс не изменился, и кеш можно использовать.

Почему сервер возвращает 304, хотя файл изменился?

Возможно, неверно настроен ETag или Last-Modified. Проверьте, что сервер обновляет эти заголовки при изменении файла.

Может ли 304 быть проблемой для SEO?

Нет, поисковые системы нормально обрабатывают 304. Это даже полезно для скорости индексации.

Источники