O navegador não pode usar o cache de chamadas anteriores do ajax?

Eu estou tentando contar com o cache do navegador para manter dados JSON retornados de chamadas AJAX no jQuery.

A atividade normal do navegador depende do cache do navegador o tempo todo. Exemplo: as imagens JPG e GIF não são atualizadas em uma página recarregada.

Mas quando eu tento usar chamadas ajax getJSON jQuery, não consigo evitar a busca dos dados do servidor.

Meus cabeçalhos retornados são assim (confirmado com firebug):

Transfer-Encoding: chunked
Date: Wed, 05 Aug 2009 02:55:39 GMT
Content-Type: text/plain; charset=ISO-8859-1
Expires: Wed, 05 Aug 2009 03:55:39 GMT
Cache-Control: max-age=3600

No entanto, uma atualização imediata da página faz com que solicitações idênticas atinjam o servidor.

Eu vi várias postagens sobre como evitar o comportamento de cache, que não é o que eu preciso. Eu vi várias postagens sobre o uso de cache, mas todos parecem confiar em salvar dados no DOM. Eu quero algo que se comporte como as imagens em cache durante uma recarga de página.

O navegador não consegue buscá-lo em seu próprio cache?

--x - x - x - x ATUALIZAR --x - x - x--

Para minha decepção, várias pessoas respeitáveis ​​concordam que isso não é apenas possível. Alguns até argumentam que não deveria ser (o que ainda me deixa perplexo).

Stubburn a uma falha, eu tentei o seguinte:

Eu defino o cabeçalho Etag em todas as páginas de saída que eu quero colocar em cache (eu escolho alguns argumentos de URL de opção que representam os dados que estou solicitando e uso isso apenas para o valor Etag)

No início da próxima solicitação, simplesmente verifico se o cabeçalho "If-None-Match" está na solicitação. Nesse caso, o navegador não está armazenando o pedido em cache como eu queria, então enviei uma resposta não modificada.

Testes mostram que o Firefox não armazenará em cache meu pedido (mas eu ainda posso evitar a parte "buscar dados caros" do meu cgi), enquanto o IE6 irá armazená-lo em cache (e nem tentar recuperar do servidor).

Não é uma resposta bonita, mas está funcionando para mim por enquanto
(essas atualizações de página inteira de dados gráficos não serão tão lentas ou caras agora).

(O que? Estou executando o IE6! OMG! Oh, pareça um esquilo!)

questionAnswers(5)

yourAnswerToTheQuestion