HTTP 304 – co oznacza „niezmodyfikowane”
Kod 304 znaczy „niezmodyfikowane”. Przeglądarka, która już wcześniej pobrała dany plik, wysyła zapytanie warunkowe – razem z informacją, jaką wersję pliku ma zapisaną w swoim cache (nagłówki If-Modified-Since albo If-None-Match). Serwer sprawdza, czy plik zmienił się od tego czasu. Jeśli nie, odpowiada krótkim 304 i nie wysyła całej zawartości ponownie – przeglądarka po prostu używa tego, co ma zapisane u siebie. To dobra wiadomość, nie błąd: strona ładuje się szybciej, a serwer i łącze są mniej obciążone.
Co to oznacza w praktyce na stronie WordPress
Na WordPressie 304 dotyczy głównie zasobów statycznych – plików CSS, JS, obrazków, czcionek – przy powtórnych wejściach tego samego użytkownika. Pierwsze wejście na stronę zwykle daje komplet 200, kolejne odświeżenie tej samej strony w tej samej przeglądarce – już sporo 304. Widać to wyraźnie w narzędziach typu PageSpeed Insights czy w zakładce Network w przeglądarce, gdzie rozmiar transferu przy 304 spada niemal do zera, mimo że zasób „wczytał się” normalnie.
Co sprawdzić
- Nagłówki cache serwera – Cache-Control, ETag, Last-Modified – to one decydują, czy przeglądarka w ogóle zapyta warunkowo i dostanie szansę na 304.
- Konfigurację wtyczki cache (np. WP Rocket, W3 Total Cache) – błędne ustawienia potrafią wymusić brak cache przeglądarki albo odwrotnie, zbyt długi czas ważności.
- Czy zmiana na stronie faktycznie jest widoczna – jeśli plik CSS czy JS zmienił się, a mimo to serwer nadal zwraca 304, to problem z wersjonowaniem pliku (cache busting), a nie z samym mechanizmem 304.
- Różnicę między pierwszym wejściem (tryb incognito, wyczyszczony cache) a powrotem na tę samą stronę – to najprostszy sposób, żeby zobaczyć 304 w akcji. Więcej o tym, jak mierzymy czasy ładowania w naszych testach, piszemy na /jak-testujemy.