HTTP caching e um mecanismo do protocolo HTTP que permite a navegadores, CDNs e proxies armazenar copias de respostas e reutiliza las em requisicoes posteriores sem contatar o servidor de origem. E a tecnica de performance mais importante da web. Um ativo estatico cacheado corretamente (imagem, CSS, JS) carrega em 1 a 10 ms do cache do navegador contra 100 a 1000 ms da origem. O HTTP caching e controlado por cabecalhos definidos em RFC 7234 (junho 2014) e RFC 9111 (junho 2022): Cache-Control (principal moderno), Expires (legado), ETag e Last-Modified (validadores) e Vary (modificador de chave).
Como funciona
- Cache hit se a copia esta fresca.
- Conditional request com If-None-Match ou If-Modified-Since, resposta 304.
- Cache miss sem validador.
Cache-Control
| Diretiva | Significado |
|---|---|
max-age=N | Fresca por N segundos. |
s-maxage=N | Apenas caches compartilhados. |
public | Qualquer cache armazena. |
private | So o navegador. |
no-cache | Revalidar antes de usar. |
no-store | Nunca armazenar. |
stale-while-revalidate=N | Serve stale durante revalidacao. |
immutable | Nunca muda. |
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
Identificador opaco. Cliente envia If-None-Match. Pode ser strong ou weak (prefixo W/).
Last-Modified
Timestamp com resolucao de 1 segundo. If-Modified-Since na proxima requisicao. ETag e mais preciso.
Vary
Vary: Accept-Encoding.Vary: Accept-Language.Vary: User-Agentevitar.Vary: Cookiequebra cache compartilhado.
Camadas de cache
| Camada | Local | Honra |
|---|---|---|
| Navegador | Dispositivo | max-age, ETag |
| CDN edge | PoP proximo | s-maxage, stale-while-revalidate |
| Proxy corporativo | Rede empresarial | public, private |
| Service Worker | Pagina via JS | Logica propria |
Cache busting e fingerprinting
webpack, Vite, esbuild, Turbopack, Rollup. app.css vira app.a1b2c3d4.css.
HTTP caching no WordPress
- WP Rocket.
- LiteSpeed Cache.
- W3 Total Cache.
- WP Super Cache.
- Cloudflare APO a 5 USD/mes.
Erros comuns
- max-age longo em HTML.
- Sem cabecalhos em estaticos.
- Vary: User-Agent.
- Set-Cookie com public.
- Pragma: no-cache (obsoleto).
- Cache poisoning sem Vary correto.
Como testar
- DevTools Network.
curl -I.- WebPageTest.
- Lighthouse.
- RedBot.
HTTP/2 e HTTP/3
Mesma semantica. Server Push depreciado em 2022, substituido por Early Hints (RFC 8297).
Como o InspectWP ajuda?
InspectWP inspeciona Cache-Control, ETag, Last-Modified e Vary de cada ativo.