1001Ferramentas
💾 Dev

Parser de Cache-Control

Lê um header Cache-Control e mostra cada diretiva (max-age, no-cache, public, immutable, stale-while-revalidate) com explicação.

Cada diretiva do Cache-Control, explicada

O Cache-Control é uma lista de diretivas separadas por vírgula, e boa parte da dificuldade vem de nomes que sugerem o oposto do que fazem. Cole o cabeçalho e a página explica cada diretiva encontrada, separando as que valem para o cache do navegador das que valem só para cache compartilhado.

O nome mais enganoso é no-cache, que não proíbe armazenar: ele permite guardar e exige revalidar antes de reutilizar. Quem quer proibir de fato usa no-store. A confusão entre os dois produz os dois erros clássicos — dado sensível ficando em cache de disco, e conteúdo estático sendo revalidado a cada visita sem necessidade.

A dupla que resolve a maior parte dos casos é max-age com immutable para arquivo versionado por hash no nome, e no-store para resposta com dado pessoal. No meio ficam as diretivas de tolerância — stale-while-revalidate, que serve conteúdo vencido enquanto atualiza em segundo plano, e stale-if-error, que serve vencido quando a origem falha. As duas trocam frescor por disponibilidade, e é uma troca que costuma valer.

Perguntas frequentes

max-age ou s-maxage?
max-age vale para todos os caches; s-maxage sobrescreve o valor apenas para os compartilhados, como CDN e proxy. O padrão útil é max-age curto e s-maxage longo: o navegador revalida rápido e a CDN segura o conteúdo, o que reduz carga na origem sem atrasar a propagação de mudança.
private impede cache em qualquer lugar?
Não. Ele impede cache compartilhado, mas permite o cache do próprio navegador — inclusive em disco. Para resposta que não pode ficar gravada na máquina do usuário, private não basta: é no-store que se precisa.
Cache-Control e Expires juntos, quem ganha?
O Cache-Control, sempre, e o Expires é ignorado por completo quando os dois existem. É a causa daquela situação em que alguém ajusta o Expires e nada muda, porque um Cache-Control ficou definido em outra camada — no servidor de aplicação, no proxy ou na CDN.

Ferramentas Relacionadas