A Cloudflare anunciou a disponibilização do suporte ao cabeçalho de resposta HTTP Vary no recurso Cache Rules para todos os seus planos, incluindo Free, Pro, Business e Enterprise. A adição oferece aos administradores de sites maior controle sobre como a rede lida com solicitações que podem resultar em múltiplas representações do mesmo recurso, como diferenças de idioma, formato de imagem, tipo de conteúdo ou método de compressão.
O servidor de origem define, por meio de Vary, os cabeçalhos de solicitação que podem afetar a resposta, mas o cabeçalho não esclarece se todas as diferenças textuais entre os valores desses cabeçalhos realmente resultam em uma resposta diferente. Por isso, o sistema de cache pode tratar valores semelhantes como cópias independentes, fragmentando o conteúdo em um grande número de itens com baixa reutilização.
Três formas de lidar com a variação
A Cloudflare oferece, para cada cabeçalho mencionado pela origem em Vary, uma de três ações:
- normalize: normalizar os valores antes de escolher a cópia armazenada. É a opção recomendada para cabeçalhos de negociação, como Accept, Accept-Language e Accept-Encoding, quando muitos valores são convertidos em um número limitado de respostas.
- passthrough: usar o valor bruto, incluindo diferenciação entre maiúsculas e minúsculas, espaços, ordem e valores duplicados, quando a diferença exata influencia a resposta.
- bypass: não armazenar a resposta quando o cabeçalho mencionado em Vary for pessoal ou tiver alta cardinalidade, como Cookie ou User-Agent.
Já Vary: * sempre faz com que o cache seja ignorado, pois qualquer parte da solicitação, incluindo informações externas à mensagem HTTP, como o endereço IP, pode influenciar a escolha da resposta pela origem.
O que muda na prática?
Ao usar a normalização, solicitações formalmente diferentes, mas que preferem o mesmo resultado, podem compartilhar a cópia armazenada. A Cloudflare reduz os valores de Accept, Accept-Language e Accept-Encoding a um formato unificado, convertendo os valores para letras minúsculas e ordenando-os de acordo com a prioridade de qualidade, com ordem alfabética em caso de empate. O administrador também pode definir os tipos de mídia ou idiomas compatíveis, como text/html e application/json, ou en, fr e de.
Esse comportamento, porém, pode eliminar diferenças necessárias para a origem. A Cloudflare observa que os valores q=0 ou algumas exceções de idioma podem ser perdidos durante a redução e, por isso, deve-se usar passthrough se a origem precisar identificar essas exclusões exatamente como foram enviadas pelo cliente. Além disso, o encaminhamento dos valores brutos pode reintroduzir o problema da fragmentação; valores como compact,full e compact, full podem produzir chaves de cache diferentes, mesmo que a origem os trate como equivalentes.
Responsabilidade da origem e limites da atualização
A origem deve retornar Vary de forma consistente em toda resposta armazenável que possa variar de acordo com os cabeçalhos de solicitação, incluindo respostas de fallback e erros. Se uma das respostas omitir o cabeçalho adequado, a Cloudflare poderá armazená-la sem o isolamento necessário.
A alteração das configurações de Vary não exclui automaticamente o conteúdo existente; as entradas antigas podem permanecer até expirarem ou até que uma operação de purge seja executada. Além disso, a configuração de Vary não substitui a chave de cache personalizada em todos os casos: a Cloudflare recomenda usar a chave personalizada quando uma propriedade da solicitação fizer parte fixa da identidade do recurso e usar Vary quando a origem declarar, na resposta, os campos que de fato a influenciam.
Por que esta notícia é importante?
A atualização aborda uma escolha prática nas redes CDN: ignorar Vary pode enviar ao cliente um formato ou idioma incorreto, enquanto tratar literalmente cada valor pode reduzir a taxa de acerto do cache e aumentar as solicitações encaminhadas de volta à origem. Segundo o material, uma análise de mais de 120 milhões de respostas de cerca de 50 mil sites populares mostrou que aproximadamente 3 mil sites usam variação por meio de quatro ou mais campos, e alguns usam 10, 23 ou 47 campos.
O benefício continua ligado à qualidade da definição das representações oferecidas pela origem e à escolha da ação adequada para cada cabeçalho. As configurações estão disponíveis pelo painel da Cloudflare, pela API Rulesets ou pelo Terraform, sendo necessário testar os diferentes valores e monitorar o CF-Cache-Status após a implantação.