Recarregar a página inteira no Post / Redirect / Get ignorando o controle de cache
Eu tenho uma página que carrega muitas imagens, css e javascript. Adicionei um cabeçalho Expires no futuro e defina o Cache-Control como público nessas dependências externas para que elas sejam armazenadas em cache. Mas toda vez que eu faço um cromo Post / Redirect / Get tenta carregá-los novamente. Esse comportamento é muito semelhante ao recarregar a página. Adicionei ETags e manipulo o cabeçalho If-None-Match, o que ajuda um pouco, mas ainda gera muitos pedidos inúteis.
Como digo ao chrome e ao safari para obter os arquivos do cache?
chrome NOK
safari NOK
firefox OK
ie OK
Veja tambémRecarregar a página inteira no Post / Redirect / Get ignorando o controle de cache no fórum de suporte do google.
Esclarecimento:
Não quero que o navegador soliciteimage1.png
duas vezes. Deve ser armazenado em cache.
200 GET page1.html
200 GET image1.png (Cache-Control: public, Expires and ETag)
302 POST action.asp (form submitted from page1.html, redirects)
200 GET page2.html
304 GET image1.png (If-None-Match)
Exemplo:
Eu criei um exemplo simples para ilustrar o problema.
Cabeçalhos:
Os cabeçalhos que envio com a imagem são:
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2010 11:30:22 GMT
Server: Apache
Cache-Control: public, max-age=86400
Expires: Sat, 19 Jun 2010 11:30:24 GMT
Etag: "123"
Content-Length: 866
Content-Type: image/png
O que deve torná-lo em cache por 24 horas. Não existe Vary: * ou algo assim.
Atualizar: Agora, esse comportamento também está presente no Safari Mobile no iOS 4. Uma regressão horível na velocidade de carregamento da página.
Atualizar: Há um relatório de erros sobre esse problema no webkit bugzilla.Bug 38690 - O envio de um POST que leva ao redirecionamento do servidor faz com que todos os itens em cache sejam novamente baixados
Atualizar: O problema persiste no iOS 4.0.1
Atualizar: O problema persiste no iOS 4.1
Atualizar: O problema persiste no iOS 4.2
Atualizar: O problema persiste no iOS 4.2.1 e no Chrome da versão 6 até a 9.
Atualizar: Há um relatório de erros sobre esse problema no projeto Chromium. (você pode estrelá-lo para mostrar que se importa)Problema 68621: Postar / Redirecionar / Obter instruções de cache ignorado
Atualizar: O problema persiste no Chrome da versão 6 até a 10. Agora é um bug de 9 meses.
Atualizar: O problema foi corrigido em 21/03/2011 19:33:07 PST. Isso se reflete no comportamento do chrome 12 (canary).