Resumo

  • Cache-Control: only-if-cached pede somente uma resposta armazenada; um cache que respeite a diretiva deve devolver uma resposta adequada ou 504.
  • Esse 504 pode ser gerado sem contato com a origem, portanto comprova falha da consulta restrita ao cache, não indisponibilidade do servidor de origem.

Imagine uma sonda de disponibilidade num cenário explicitamente hipotético. O operador quer saber se uma configuração está residente na borda e envia GET com Cache-Control: only-if-cached. O cache não encontra resposta armazenada que satisfaça a requisição e devolve 504. Uma regra lê apenas o status, declara timeout da origem e aciona sua equipe. No entanto, o cache cumpriu a instrução: não encaminhou a requisição e a origem não recebeu tráfego.

A ambiguidade vem dos dois contextos do 504. A RFC 9110 define Gateway Timeout, em geral, como a falta de resposta oportuna de um servidor a montante que um gateway precisava acessar. A RFC 9111 dá ao cache que honra only-if-cached duas saídas: uma resposta armazenada compatível com as demais restrições ou 504. Nesse segundo ramo, o cliente pediu que a busca a montante não ocorresse.

A diretiva muda o experimento. Ela não pergunta se a origem consegue responder, mas se aquele cache consegue satisfazer a requisição usando apenas uma resposta armazenada que possa reutilizar. Ler o resultado como teste de ponta a ponta mistura dois caminhos de controle.

Ter bytes guardados não basta. Alvo e método devem coincidir; os campos indicados por Vary precisam corresponder; requisitos de validação devem ser cumpridos; e a resposta precisa estar atual, validada ou autorizada a ser servida desatualizada. Um cache pode conter dados do URI sem possuir candidato elegível. O 504 pode significar “nada utilizável aqui sob estas condições”, não “nada armazenado”.

O status também não identifica qual cache decidiu. A requisição pode atravessar navegador, proxy corporativo, CDN e gateway. É necessário registrar o ponto que respondeu, a diretiva vista ali, candidatos e rejeições, além da supressão do encaminhamento. Sem essa trilha, o painel atribui causa por convenção.

Uma falha da origem e uma falha de residência em cache têm responsáveis, correções e efeitos diferentes. Se uma sonda comum funcionar ao lado da exclusiva, isso não prova intermitência: as duas fizeram perguntas diferentes.

Mantenha um registro da decisão para a consulta restrita ao cache. Trata-se de uma proposta editorial de controle, não de um elemento de protocolo definido pela IETF. Vincule alvo, método, diretivas, identidade e chave do cache, candidatos, comparação Vary, estado de frescor ou permissão para servir conteúdo desatualizado, validação, seleção ou falha, decisão de encaminhar e evidência de tentativa a montante. Só então classifique a causa como elegibilidade do cache, política de encaminhamento ou tempo de espera a montante.

Ausência de tentativa a montante não prova que a origem estava saudável; prova que essa observação não estabelece sua falha. A disponibilidade da origem exige outra sonda, sem a restrição. O contexto da requisição e a trilha de execução, não o código isolado, sustentam a conclusão.

Fontes