Co to znaczy
Kopia, którą klient ma w pamięci podręcznej, jest nadal aktualna, więc serwer nie wysyła treści. To odpowiedź na żądanie warunkowe z If-None-Match lub If-Modified-Since.
Typowe przyczyny
- ETag w If-None-Match pasuje do bieżącej wersji
- Zasób nie zmienił się od If-Modified-Since
- Przeglądarka weryfikuje zasób z pamięci podręcznej
Jak naprawić
Jako klient lub odwiedzający
Użyj treści z pamięci podręcznej. Jeśli treść wygląda na nieaktualną, walidator może być błędny; wymuś przeładowanie lub sprawdź generowanie ETag.
Jako właściciel strony lub API
Generuj stabilne ETagi (identyczne na wszystkich serwerach za load balancerem) i wysyłaj te same nagłówki cache co przy 200.
Przykładowa odpowiedź
HTTP/1.1 304 Not Modified
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "33a64df5"
Cache-Control: max-age=3600 Specyfikacja
FAQ
› Czy 304 to błąd?
Nie. Oszczędza transfer, informując klienta, że jego pamięć podręczna jest aktualna.
› Dlaczego użytkownicy widzą stare pliki po wdrożeniu?
Nagłówki cache pozwalają na nieaktualne kopie. Używaj nazw plików z odciskiem dla zasobów i krótkiego max-age z walidacją dla HTML.