304 Not Modified

Kopia w pamięci podręcznej jest wciąż aktualna.

Kiedy go używać

Odpowiedź na żądanie warunkowe z If-None-Match lub If-Modified-Since.

Warto wiedzieć

304 to odpowiedź na żądanie warunkowe. Gdy odpowiedź zawiera nagłówek ETag lub Last-Modified, przeglądarka wysyła później If-None-Match lub If-Modified-Since, a serwer odpowiada 304 bez treści, jeśli nic się nie zmieniło, co oszczędza transfer. Odpowiedź 304 powinna powtarzać nagłówki takie jak ETag, Cache-Control i Vary, żeby cache mógł odświeżyć zapisaną kopię i jej czas ważności.

ETagi generowane osobno na każdej maszynie, np. stare ETagi Apache'a oparte na i-węzłach, różnią się między serwerami za load balancerem, więc klienty rzadko dostają 304. Kompresja też może zmienić lub osłabić ETagi. W DevTools odpowiedź 304 przesyła kilkaset bajtów, a „from disk cache” ze statusem 200 oznacza, że żądanie w ogóle nie zostało wysłane. fetch ukrywa rewalidacje przeglądarki i zgłasza je jako 200 z treścią z cache.

Przekierowanie (3xx)

Kody 3xx to przekierowania: aby dokończyć żądanie, klient musi przejść gdzie indziej albo użyć kopii z pamięci podręcznej.

Jak to wygląda

HTTP/1.1 304 Not Modified

Jak go wysłać

Node.js / Expressres.status(304).end()
Python / Flaskreturn '', 304
nginxreturn 304;

Jak go sprawdzić

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Otwórz narzędzie Kody statusu HTTP