Por que essa resposta HTTP não está armazenada em cache?

1

Abaixo estão os cabeçalhos de solicitação e resposta para uma página no meu aplicativo da Web:

Solicitar cabeçalhos:

GET http://my-server/myapp/mypage.aspx?myid=123 HTTP/1.1
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: my-server
Connection: Keep-Alive
Pragma: no-cache
Cookie: <sanitized>

Cabeçalhos de resposta:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 173788
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Thu, 15 Jul 2010 17:48:25 GMT

O IE8 e o Firefox parecem ignorar as cópias em cache desta página. Ambos os navegadores enviam as mesmas solicitações incondicionais sempre que eu carrego a página. Eu verifiquei que o IE8 pelo menos armazena em cache a resposta no diretório "Temporary Internet Files".

Pelo que entendi, Cache-Control: private deve instruir os dois navegadores para armazenar em cache a resposta. Como não há informações de expiração, elas devem enviar solicitações condicionais para validar a cópia em cache para solicitações posteriores, mas isso não está acontecendo. Existe alguma heurística em nível de navegador rejeitando a cópia em cache (ou impedindo o armazenamento em cache)? Ou a minha compreensão dos cabeçalhos é simplesmente errada?

O servidor da Web envolvido é o IIS 7.5 em execução no Windows 7 Enterprise. Os navegadores são IE 8 e Firefox 3.6.6, sendo executados como administrador na mesma máquina que o IIS (as solicitações são feitas para o nome do host da máquina e não para o localhost).

Curiosamente, o IE9 Platform Preview 3 nem sequer envia um pedido condicional - reutiliza cegamente a cópia em cache!

    
por Annabelle 15.07.2010 / 20:47

2 respostas

1

link diz "Um cache privado (não compartilhado) MAIO armazena em cache a resposta. "

Eu acho que tudo é o MAIO, você só pode ter certeza que a página não será armazenada em cache em um cache público, não que a página será armazenada em cache

    
por 15.07.2010 / 21:08
1

Tente responder com um cabeçalho Expires .

    
por 15.07.2010 / 22:51