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.

http://crydust.be/lab/prg/

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).

questionAnswers(3)

yourAnswerToTheQuestion