DevToolPal
RU
3xx Перенаправление

304 Not Modified

Не изменялось

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

Кэшированная копия у клиента всё ещё актуальна, поэтому сервер не отправляет тело. Это ответ на условный запрос с If-None-Match или If-Modified-Since.

Типичные причины

  • ETag в If-None-Match совпадает с текущей версией
  • Ресурс не менялся с момента If-Modified-Since
  • Браузер перепроверяет закэшированный ресурс

Как исправить

Если вы клиент или посетитель

Используйте тело из кэша. Если содержимое выглядит устаревшим, валидатор может быть неверным; сделайте принудительное обновление или проверьте генерацию ETag.

Если вы владелец сайта или API

Генерируйте стабильные ETag (одинаковые на всех серверах за балансировщиком) и отправляйте те же заголовки кэширования, что и с 200.

Пример ответа

HTTP/1.1
HTTP/1.1 304 Not Modified
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "33a64df5"
Cache-Control: max-age=3600

Спецификация

RFC 9110 §15.4.5

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

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

Нет. Он экономит трафик, сообщая клиенту, что кэш актуален.

› Почему после деплоя пользователи видят старые файлы?

Заголовки кэширования допускают устаревшие копии. Для статики используйте имена файлов с хешем, а для HTML — короткий max-age с перепроверкой.