Ошибка 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
- Проблемы с синхронизацией времени между клиентом и сервером
Что делать — по порядку
- Проверить, что страница или файл действительно не изменились (сравнить содержимое)
- Очистить кеш браузера и повторить запрос (Ctrl+F5 или через инструменты разработчика)
- Проверить заголовки ответа сервера (Last-Modified, ETag, Cache-Control) через инструменты разработчика браузера
- Убедиться, что сервер правильно обрабатывает условные запросы (тест с curl: curl -I -H 'If-Modified-Since: ...' URL)
- Проверить настройки кеширования на сервере (например, в .htaccess, nginx.conf или web.config)
- Если используется CDN, проверить его настройки кеширования и инвалидации
- Проверить синхронизацию времени на сервере и клиенте (ntp)
- При необходимости отключить условные запросы на стороне сервера (не рекомендуется)
Нажимайте на пункты, чтобы отмечать выполненные.
Частые вопросы
Почему я вижу 304 в консоли браузера, но страница не обновляется?
Это нормально: 304 означает, что сервер сказал «кеш актуален», и браузер показал старую версию. Чтобы принудительно обновить, используйте Ctrl+F5.
Как отключить кеширование и всегда получать 200?
Добавьте заголовок Cache-Control: no-cache в ответ сервера. Но это увеличит нагрузку и время загрузки.
304 — это ошибка?
Нет, это успешный статус. Он означает, что ресурс не изменился, и кеш можно использовать.
Почему сервер возвращает 304, хотя файл изменился?
Возможно, неверно настроен ETag или Last-Modified. Проверьте, что сервер обновляет эти заголовки при изменении файла.
Может ли 304 быть проблемой для SEO?
Нет, поисковые системы нормально обрабатывают 304. Это даже полезно для скорости индексации.
Источники
- HTTP Status 304 Not Modified - MDN Web Docs проверено 28.07.2026
- RFC 7232 - Conditional Requests проверено 28.07.2026
Где встречается
Все HTTP-серверы, поддерживающие протокол HTTP/1.1 и выше; браузеры, прокси-серверы, CDN