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

Como usar Gerador de Header Cache-Control

  1. Escolha uma predefinição ou comece do zero e escolha public ou private.
  2. Ative as diretivas que precisa, como no-cache, must-revalidate ou immutable.
  3. Informe tempos de vida como max-age usando um número e uma unidade (horas, dias, anos).
  4. Leia o valor do header gerado e a explicação em português claro abaixo dele.
  5. 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

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