Gerador de Header Cache-Control
Monte um header de resposta HTTP Cache-Control correto a partir de alternadores simples e unidades de tempo humanas, direto no seu navegador.
Seu header Cache-Control é montado localmente no seu navegador a partir das opções que você escolhe, e nada do que você configura é enviado nem armazenado em um servidor.
Configurando um servidor? Experimente o Gerador de Configuração nginx.
Sobre Gerador de Header Cache-Control
Este gerador de header Cache-Control transforma o confuso conjunto de diretivas de cache HTTP em alguns alternadores simples. Ative public ou private, no-store, no-cache, must-revalidate, proxy-revalidate ou immutable, e defina tempos de vida como max-age, s-maxage, stale-while-revalidate e stale-if-error usando unidades humanas como horas, dias ou anos em vez de contar segundos. Conforme você muda as opções, a ferramenta compõe as diretivas na ordem canônica, explica em português claro exatamente o que o header atual faz e sinaliza combinações contraditórias como no-store com max-age. Predefinições cobrem os casos do dia a dia: um ativo estático immutable de um ano, HTML que sempre revalida, dados privados que nunca são armazenados e uma política dividida entre CDN e navegador. Copie o header bruto ou trechos prontos para nginx, Apache e meta HTML. Tudo roda no seu dispositivo, no navegador.
Recursos
- Alternadores para public, private, no-store, no-cache, must-revalidate, proxy-revalidate e immutable
- Entradas de tempo humanas (de segundos a anos) para max-age, s-maxage, stale-while-revalidate e stale-if-error
- Compõe as diretivas em uma ordem canônica limpa enquanto você edita
- Explicação em português claro de exatamente o que o header atual faz
- Aplica regras de exclusão mútua e avisa sobre combinações contraditórias
- Predefinições de um clique para ativos estáticos, HTML que sempre revalida, dados privados e cache dividido entre CDN/navegador
- Trechos prontos para copiar do header bruto, do add_header do nginx, do Header set do Apache e de uma meta tag HTML
- Roda inteiramente no seu navegador, então nada do que você configura sai do seu dispositivo
Como usar Gerador de Header Cache-Control
- Escolha uma predefinição ou comece do zero e escolha public ou private.
- Ative as diretivas que precisa, como no-cache, must-revalidate ou immutable.
- Informe tempos de vida como max-age usando um número e uma unidade (horas, dias, anos).
- Leia o valor do header gerado e a explicação em português claro abaixo dele.
- Copie o header bruto ou o trecho de nginx, Apache ou meta HTML de que precisa.
Exemplo
Entrada
public + immutable + max-age = 1 year
Saída
Cache-Control: public, max-age=31536000, immutable
A clássica política de ativo estático com fingerprint: armazene em cache por um ano e nunca revalide.
Erros comuns e solução de problemas
- Você definiu no-store mas também adicionou max-age ou immutable e eles sumiram. — no-store significa que nada é armazenado em cache, então ele sobrepõe todas as outras diretivas. Desligue no-store se você realmente quer uma resposta armazenada em cache, mas controlada.
- immutable parece não ter efeito. — immutable só importa enquanto uma resposta ainda está fresca, então combine-o com um max-age diferente de zero. Sem max-age não há janela de frescor para ele se aplicar.
- s-maxage é ignorado pelo seu CDN quando o header é private. — private proíbe caches compartilhados de armazenar a resposta, então s-maxage, que só se aplica a caches compartilhados, nunca vale. Use public se você quer que um CDN a armazene em cache.
- no-cache com um max-age longo se comporta como se não estivesse em cache. — no-cache força a revalidação com a origem antes de cada reutilização, o que efetivamente cancela o frescor que o max-age concede. Remova uma das duas conforme seu objetivo.
Perguntas frequentes
- Qual é a diferença entre no-cache e no-store?
- no-store significa que a resposta nunca deve ser gravada em nenhum cache, então toda requisição volta à origem. no-cache permite armazenar a resposta, mas o cache deve revalidá-la com a origem antes de servi-la de novo. no-store é sobre não guardar uma cópia; no-cache é sobre sempre verificar se uma cópia guardada ainda está atual.
- O que immutable faz em um header Cache-Control?
- immutable diz ao navegador que o recurso nunca mudará durante o tempo de vida do seu max-age, então ele pode pular a revalidação mesmo quando o usuário atualiza a página. É destinado a arquivos versionados ou com fingerprint como app.9f2c.js, onde um novo build é publicado sob uma nova URL em vez de sobrescrever a antiga.
- Como max-age e s-maxage diferem?
- max-age define por quanto tempo a resposta permanece fresca em qualquer cache, incluindo o navegador. s-maxage sobrepõe max-age, mas apenas para caches compartilhados como CDNs e proxies. Definir os dois permite armazenar uma resposta brevemente nos navegadores enquanto a mantém por mais tempo no seu CDN.
- Quando devo usar public em vez de private?
- public permite que caches compartilhados como CDNs e proxies armazenem a resposta junto com o navegador. private restringe o armazenamento ao navegador do usuário individual, que é a escolha certa para respostas personalizadas ou autenticadas que não podem ser servidas a outro usuário a partir de um cache compartilhado.
- O que stale-while-revalidate faz?
- stale-while-revalidate permite que um cache sirva imediatamente uma resposta ligeiramente desatualizada enquanto busca uma cópia fresca em segundo plano. Os usuários recebem uma resposta instantânea e o cache se atualiza para a próxima requisição, o que suaviza o momento em que um recurso expira.
- Minha configuração é enviada para um servidor?
- Não. O header, a explicação e os trechos são todos montados no seu navegador enquanto você alterna as opções, então a configuração é processada localmente no seu dispositivo e nada é enviado.
Ferramentas relacionadas
Todas as ferramentas de ArrayKit