Por que o Safari não honra minha diretiva de controle de cache?
-
25-09-2019 - |
Pergunta
Há uma página específica que eu gostaria que o navegador sempre carregue, principalmente quando o usuário pressiona o botão Back Back para chegar a ele.
Por isso, uso a seguinte diretiva 'Cache-Control' no cabeçalho desta página (pegando o PHP diretamente do meu código).
$headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
Isso funciona para FF, IE e Chrome, mas o Safari (5.0.1) parece ignorar a diretiva e não recarregue a página (em vários usuários, por isso não parece ser um problema específico de configuração). A pesquisa não revelou bugs conhecidos, então estou assumindo que há algo errado do meu lado.
Qualquer dica será muito apreciada.
ATUALIZAÇÃO: Acabei de encontrar esta resposta em So.
Navegador Safari ignorando meu sem cache
Ainda não tentei, mas parece promissor. Muito estranho que seja uma adição à etiqueta corporal, então estou cético.
Solução
A resposta é incluir o seguinte atributo na etiqueta corporal para forçar o Safari para recarregar a página:
onunload=""
Como em:
<body onunload="">
Eu encontrei isso aqui: Navegador Safari ignorando meu sem cache
Que por sua vez o obtiveram deste tópico: Existe um evento Onload de navegador cruzado ao clicar no botão Voltar?
Outras dicas
Veja também este relatório de bug do webkit:https://bugs.webkit.org/show_bug.cgi?id=71509
Estou enfrentando o mesmo problema e parece ser um bug no Safari.