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 ModifiedJak go wysłać
| Node.js / Express | res.status(304).end() |
|---|---|
| Python / Flask | return '', 304 |
| nginx | return 304; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/