Samuel Arendt

Cache correto depende de quais diferenças realmente importam

Quando a mesma URL entrega páginas diferentes conforme idioma ou formato, o cache precisa saber quais diferenças da requisição mudam a resposta. Desde setembro, as Cache Rules da Cloudflare aceitam o cabeçalho HTTP Vary em todos os planos. Ele permite que uma mesma URL tenha respostas armazenadas separadamente conforme um cabeçalho da requisição, como Accept-Language. Isso evita que o cache entregue, por exemplo, uma versão em português a alguém que pediu a página em inglês.

O cabeçalho resolve apenas metade do problema. Navegadores podem enviar valores diferentes que representam a mesma preferência. Se cada texto bruto virar uma chave separada, o cache acumula cópias que quase nunca são reutilizadas. Se diferenças importantes forem ignoradas, uma resposta pode chegar ao visitante errado. A configuração agora exige decidir quais diferenças mudam de fato o conteúdo.

Normalize valores equivalentes

Nas regras da Cloudflare, normalize transforma valores conhecidos em uma forma comum antes de escolher a cópia armazenada. Para Accept, Accept-Language e Accept-Encoding, é possível limitar os formatos ou idiomas reconhecidos. Assim, preferências equivalentes podem usar a mesma resposta em cache.

Esse costuma ser um bom começo quando o servidor entrega poucas versões previsíveis. A equipe pode limitar os formatos ou idiomas aceitos para que diferenças pequenas nos cabeçalhos não criem cópias adicionais. A normalização só é segura se a lista configurada corresponder às respostas que o servidor realmente oferece.

Para outros cabeçalhos, a normalização é mais limitada: espaços opcionais são removidos e linhas repetidas são combinadas, mas valores com diferenças internas ainda podem permanecer distintos. Vale conferir a documentação antes de presumir que dois valores personalizados serão tratados como equivalentes.

Preserve ou ignore quando fizer sentido

Com passthrough, a Cloudflare usa o valor bruto do cabeçalho para selecionar a cópia. Diferenças de maiúsculas, espaços e ordem podem criar respostas separadas. Isso pode ser necessário quando o valor exato muda o conteúdo, mas também multiplica as chaves do cache. Use-o apenas quando essa distinção tiver efeito real na resposta.

Com bypass, a resposta não é armazenada se o servidor listar aquele cabeçalho em Vary. É a escolha mais segura para valores pessoais ou imprevisíveis, como Cookie, quando não existe uma regra que permita compartilhar a resposta. O custo é abrir mão do cache para essas respostas; entradas antigas continuam armazenadas até serem removidas ou expirarem.

Essas ações só entram em jogo quando a resposta do servidor inclui Vary. Adicionar uma regra, por si só, não faz a Cloudflare criar variantes para toda resposta. Primeiro, confirme que o servidor declara os cabeçalhos certos e que a rota pode ser armazenada em cache.

Confira resposta e reaproveitamento

Teste a mesma URL com valores que deveriam receber conteúdo igual e com outros que precisam de uma resposta diferente. Depois, observe se a primeira visita preenche o cache e se as seguintes reutilizam a variante esperada. Para valores normalizados, cabeçalhos diferentes mas equivalentes devem convergir; para valores preservados, a separação deve corresponder a uma diferença visível na resposta.

Também é possível limpar todas as variantes de uma URL com uma purga por URL. Isso ajuda durante a mudança de regra, mas não substitui o teste: uma configuração pode melhorar o reaproveitamento e ainda servir conteúdo incorreto se o servidor declarar Vary de forma incompleta.

O critério prático é simples: normalize diferenças de apresentação que não mudam a resposta, preserve as que mudam, e deixe sem cache aquilo que depende de dados pessoais ou imprevisíveis. A regra fica mais fácil de manter quando cada cabeçalho tem uma justificativa ligada ao conteúdo entregue.

Se a sua empresa está avaliando algo parecido, me chama no LinkedIn ou no WhatsApp.

Referências

Placas de vidro transparente em forma de semicírculo e losango sobrepostas, com sombras suaves sobre fundo claro.

Foto de Evie S. no Unsplash

#Arquitetura, #Operações, #Performance