Também disponível em: English · Español · Français · العربية
Cabeçalho Cache-Control: todas as diretivas e o que a CDN vê
Escolha diretivas e receba um cabeçalho, ou cole um e descubra o que ele realmente diz a um navegador e a um cache compartilhado.
O que é o cabeçalho Cache-Control?
Cache-Control é como um servidor diz aos caches o que podem fazer com uma resposta, e como um cliente diz a eles o que vai aceitar. A RFC 9111 define dezessete diretivas: sete que vão numa requisição e dez que vão numa resposta. Quatro nomes aparecem nos dois lados — max-age, no-cache, no-store e no-transform — e significam coisas diferentes conforme a direção em que a mensagem viaja.
A distinção que mais importa nem está na lista de diretivas. A RFC 9111 separa o cache compartilhado, ou seja uma CDN ou um proxy reverso ou qualquer coisa que sirva a mais de uma pessoa, do cache privado, que é o do navegador. Sete das dezessete diretivas citam um cache compartilhado na definição e só duas citam os dois. A IANA mantém um registro dessas diretivas e não guarda nada disso: nomes e referências e nada sobre comportamento, então esta página lê a prosa da especificação.
É por isso que um cabeçalho pode parecer caprichado e não dizer nada à sua CDN. max-age fala com qualquer cache; s-maxage, public, private e proxy-revalidate são as que apontam expressamente para o compartilhado.
Como usar
- Escolha o lado. Resposta é o caso comum: o que o seu servidor envia. Requisição é o que um navegador ou cliente envia, e tem outro conjunto de sete diretivas.
- Clique nas diretivas ou digite o cabeçalho direto. Os botões e o campo de texto são a mesma coisa: alternar uma diretiva reescreve o campo, e editar o campo atualiza os botões.
- Leia o veredito, não só a string. Você fica sabendo se algo ali chega a um cache compartilhado, o que está de fato sendo proibido e quais diretivas têm problemas, com a redação original da especificação logo abaixo.
no-cache não significa “não armazene”
É a leitura equivocada de maior consequência no cabeçalho inteiro, e a RFC 9111 resolve isso sem rodeios. A forma de resposta do no-cache significa que a resposta “não deve ser usada para satisfazer nenhuma outra requisição sem ser encaminhada para validação”. A resposta continua armazenada. Ela só não pode ser entregue de novo sem consultar o seu servidor antes — o que costuma ser exatamente o que as pessoas querem e nada do que acham que estão pedindo.
A diretiva que proíbe armazenar é no-store: um cache “não deve armazenar nenhuma parte” da requisição nem da resposta. Se você tem dados sensíveis e recorreu ao no-cache, recorreu à errada. Esta página relata as duas como achados separados em vez de misturá-las, e avisa na hora quando um cabeçalho traz no-cache sem no-store.
Uma sutileza relacionada que vale conhecer: no-cache pode levar um nome de cabeçalho como valor, e as duas formas diferem. Sem valor, vale para a resposta inteira. Com um nome de cabeçalho, restringe só aquele, enquanto o resto da resposta ainda pode ser reusado. Sete diretivas levam valor e só quatro o exigem: no-cache, private e max-stale têm uma forma perfeitamente válida sem nada depois.
O que esta página não vai lhe dizer
Ela não vai dizer o que a sua CDN específica faz. As diretivas são o que a especificação diz que um cache conforme deve e pode fazer; toda CDN comercial acrescenta por cima a própria configuração, as próprias diretivas proprietárias e os próprios padrões, e várias honram extensões não padronizadas que esta página desconhece. Uma diretiva marcada como alcançando um cache compartilhado diz que o padrão se dirige a ele, não que o seu provedor a implemente como você espera.
Ela também cobre apenas o Cache-Control. O frescor é decidido por outros cabeçalhos também — Expires, Age, ETag e Last-Modified participam todos —, e uma resposta sem Cache-Control nenhum ainda pode ser armazenada por heurística. Conferir um cabeçalho é um passo necessário, não uma auditoria completa.
E ela apresenta as palavras da especificação, não conselhos. Não há um cabeçalho recomendado aqui, porque o certo depende de o recurso ser personalizado, de a URL dele ser versionada e da rapidez com que você precisa que uma mudança chegue às pessoas. O que a página consegue fazer é garantir que o cabeçalho escolhido significa o que você pensa.
Por que é grátis?
A tabela de diretivas são alguns kilobytes que viajam com a página, e a análise acontece no seu próprio navegador. Nada do que você digita é enviado, nada é registrado e não há conta a criar.
Sem cadastro, sem limites e sem marca d'água em nada que você copiar.