A Cloudflare ativou Vary for Images: servir imagens corretas aos navegadores (blog.cloudflare.com)-support/" target="_blank" rel="nofollow noopener">Cloudflare: suporte nativo ao header HTTP Vary (blog.cloudflare.com) nativo ao header HTTP Vary nas Cache Rules para todos os planos, depois de constatar que quase 3 mil origens, numa auditoria de 120 milhões de respostas HTTP, fragmentavam o cache ao variar em quatro ou mais headers.
O que a Cloudflare anunciou sobre o header HTTP vary
A Cloudflare passou a suportar nativamente o header de resposta HTTP Vary em toda a sua rede global de edge, com a funcionalidade disponível dentro das Cache Rules em todos os planos de clientes. A capacidade permite que origens negociem representações, como texto localizado, codificações modernas de imagem ou payloads alternativos, sem que operadores percam o controle sobre a fragmentação do cache.
Historicamente, CDNs intermediárias tratam o header Vary com cautela. Pela semântica padrão do HTTP, o Vary indica a caches downstream que a origem avaliou headers específicos da requisição antes de gerar a resposta. Se o cache respeita o Vary sem transformação, pequenas diferenças sintáticas nos headers do cliente, como espaços em branco, maiúsculas e minúsculas ou ordenações de preferência de idioma, fragmentam um único recurso em dezenas de variantes distintas.
Leia também
Cloudflare redesenha cache DNS do 1.1.1.1 em Rust e libera 100 tb de memória
Mas de que tamanho é o problema na prática? Em auditoria empírica de mais de 120 milhões de respostas HTTP em cerca de 50 mil domínios de topo, a Cloudflare descobriu que quase 3 mil origens variavam em quatro ou mais headers de requisição, com casos extremos variando em dezenas de campos distintos. A variância descontrolada causa cache thrashing, colapsando as taxas de hit e elevando a carga na origem.
Como funcionam as três ações das cache rules
Para equilibrar correção semântica e eficiência de cache no edge, a Cloudflare separou a negociação em dois estágios operacionais. A origem continua especificando quais headers influenciam a resposta, enquanto as Cache Rules ditam como o edge processa, normaliza ou ignora os valores desses headers antes de computar a chave da variante.
Ao configurar o tratamento de Vary, operadores definem comportamentos por header ou aplicam políticas de fallback para campos não listados. O motor expõe três ações distintas: normalize, que canoniza headers complexos como Accept e Accept-Language em classes equivalentes padronizadas, eliminando diferenças incidentais do cliente; pass through, que armazena strings exatas e sensíveis a maiúsculas, necessário quando a aplicação depende de correspondência precisa de tokens; e bypass, que pula o cache de edge inteiramente para headers voláteis ou de alta cardinalidade.
{
"expression": "(http.request.uri.path eq \"/api/catalog\")",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"vary": {
"headers": [
{ "name": "accept", "action": "normalize" },
{ "name": "accept-language", "action": "normalize" }
],
"default_action": "pass_through"
}
}
}
A configuração é feita pelo Ruleset Engine ou pelo painel da Cloudflare. Nos bastidores, o edge registra os campos Vary anunciados pela origem junto à chave base de cache, composta por scheme, host e path. Requisições seguintes executam primeiro a busca pela chave base e, se houver variantes, os headers correspondentes são avaliados contra as ações configuradas na Cache Rule.
Por que a resposta do vary muda o jogo na configuração
O product manager Alex Krivit e o engenheiro de sistemas Zaidoon Abd Al Hadi no GitHub (github.com)1" rel="nofollow noopener noreferrer" target="_blank">Zaidoon Abd Al Hadi destacaram que a arquitetura em dois estágios resolve limitações antigas das alternativas manuais. Antes, as equipes precisavam escolher entre desativar o cache, depender de Cloudflare Workers especializados, manter chaves de cache personalizadas e frágeis que antecipavam headers antes de ver a resposta da origem, ou usar extensões especializadas como o Vary for Images.
A diferença central é o momento do gatilho. Chaves de cache personalizadas avaliam regras antecipadamente em toda requisição, aplicando-se mesmo quando a origem retorna respostas estáticas e invariantes. Já as regras de Vary nas Cache Rules disparam dinamicamente apenas quando a origem inclui o header Vary, evitando expansão desnecessária do espaço de chaves para respostas sem variação.
Qual o risco de ligar tudo sem critério? Segundo a documentação oficial do recurso, operadores precisam avaliar a cardinalidade da chave de cache antes de ativar pass-through total em headers de alta entropia. Headers com tokens arbitrários ou identificadores de sessão fazem cada string distinta criar uma entrada isolada no edge, reduzindo o tempo de vida do cache e aumentando o churn de evicção.
Na avaliação do Mercado de TI, o movimento indica uma maturação das CDNs em direção a caches semânticos: em vez de tratar o Vary como problema a evitar, a Cloudflare o transforma em política configurável por header. Para times de platform engineering com aplicações multilíngue ou negociação de conteúdo via API, o recurso elimina uma classe inteira de workarounds com Workers. A empresa já havia demonstrado foco semelhante em eficiência ao redesenhar o cache DNS do 1.1.1.1 em Rust e liberar 100 TB de memória.
Info: o suporte a Vary nas Cache Rules está ativo para todas as zonas Free, Pro, Business e Enterprise da Cloudflare, sem custo adicional anunciado.
Atenção: habilitar pass-through em headers com tokens de sessão cria uma entrada de cache por cliente, derrubando o hit ratio. Prefira normalize ou bypass para campos voláteis.
Dica: comece com normalize em Accept e Accept-Language e pass_through como ação padrão; monitore o hit ratio por uma semana antes de endurecer a política.
O próximo passo natural é observar se outras CDNs adotam modelos semelhantes de negociação em dois estágios. Para quem opera aplicações com negociação de conteúdo no Brasil, a configuração fica disponível pelo painel ou pelo Ruleset Engine, e a tendência é que o tema ganhe relevância em discussões de platform engineering e desempenho de APIs.
Origem anuncia as dependências com headers padrão
| Ação | Comportamento | Quando usar |
|---|---|---|
| normalize | Canoniza headers como Accept e Accept-Language em classes equivalentes | Negociação de conteúdo e idioma |
| pass through | Armazena strings exatas, sensíveis a maiúsculas | Tokens que exigem correspondência precisa |
| bypass | Ignora o cache de edge para a requisição | Headers voláteis ou de alta cardinalidade |
Arraste para o lado para ver toda a tabela.
Um servidor de origem que atende endpoints com múltiplas representações anuncia suas dependências dinâmicas usando headers padrão: Vary: Accept, Accept-Language, junto com Cache-Control: public, max-age=3600. A partir desse anúncio, o edge indexa cada nova resposta no pool de variantes quando nenhuma variante em cache corresponde aos critérios normalizados; caso contrário, a requisição segue para a origem.
Fonte: Infoq