HTTP caching to mechanizm protokolu HTTP umozliwiajacy przegladarkom, CDN i proxy przechowywanie kopii odpowiedzi i wykorzystywanie ich w pozniejszych zadaniach bez kontaktu z serwerem origin. To najwazniejsza technika wydajnosciowa w sieci. Dobrze zacachowany zasob statyczny (obraz, CSS, JS) laduje sie w 1 do 10 ms z cache przegladarki, podczas gdy z origin 100 do 1000 ms. Sterowanie naglowkami zdefiniowanymi w RFC 7234 (czerwiec 2014) i RFC 9111 (czerwiec 2022): Cache-Control, Expires, ETag, Last-Modified, Vary.
Jak to dziala
- Cache hit gdy kopia swieza.
- Conditional request If-None-Match lub If-Modified-Since, odpowiedz 304.
- Cache miss bez walidatora.
Cache-Control
| Dyrektywa | Znaczenie |
|---|---|
max-age=N | Swieza przez N sekund. |
s-maxage=N | Tylko cache wspoldzielone. |
public | Kazdy cache moze przechowywac. |
private | Tylko przegladarka. |
no-cache | Rewalidacja przed uzyciem. |
no-store | Nigdy nie przechowywac. |
stale-while-revalidate=N | Serwuje stale podczas rewalidacji. |
immutable | Nigdy nie zmienia. |
Cache-Control: public, max-age=31536000, immutable
Cache-Control: public, max-age=0, s-maxage=300, stale-while-revalidate=86400
Cache-Control: private, no-cache
Cache-Control: no-storeETag
Nieprzezroczysty identyfikator. Klient wysyla If-None-Match. Strong lub weak (W/).
Last-Modified
Znacznik czasu z rozdzielczoscia 1 sekundy. ETag jest dokladniejszy.
Vary
Vary: Accept-Encoding.Vary: Accept-Language.Vary: User-Agentunikac.Vary: Cookiepsuje shared cache.
Warstwy cache
| Warstwa | Lokalizacja | Respektuje |
|---|---|---|
| Przegladarka | Urzadzenie | max-age, ETag |
| CDN edge | PoP blisko | s-maxage, stale-while-revalidate |
| Proxy firmowe | Siec firmowa | public, private |
| Service Worker | Strona przez JS | Wlasna logika |
Cache busting i fingerprinting
webpack, Vite, esbuild, Turbopack, Rollup. app.css staje sie app.a1b2c3d4.css.
HTTP caching w WordPressie
- WP Rocket.
- LiteSpeed Cache.
- W3 Total Cache.
- WP Super Cache.
- Cloudflare APO 5 USD/mies.
Czeste bledy
- Dlugi max-age na HTML.
- Brak naglowkow na zasobach statycznych.
- Vary: User-Agent.
- Set-Cookie z public.
- Pragma: no-cache (przestarzaly).
- Cache poisoning bez wlasciwego Vary.
Testowanie
- DevTools Network.
curl -I.- WebPageTest.
- Lighthouse.
- RedBot.
HTTP/2 i HTTP/3
Ta sama semantyka. Server Push wycofany w Chrome od 2022, zastapiony Early Hints (RFC 8297).
Jak InspectWP pomaga?
InspectWP sprawdza Cache-Control, ETag, Last-Modified i Vary kazdego zasobu.