O que acontece se você não definir o cabeçalho de controle de cache?

13

O que acontece se você não definir o cache-controlcabeçalho? O HTTP especifica um comportamento padrão que os clientes devem seguir ou cabe a eles decidir?

No Chrome, vi algumas solicitações de Javascript que não têm cache-controlcabeçalhos aparecendo como 200 (from disk cache). O Chrome está otimizando isso?

No IE, eu vi isso aparecer como um 304 (not modified).

Como entendo isso melhor?

Nishant
fonte
11
"sem cabeçalhos de cache" significa sem cabeçalho de controle de cache ou realmente sem cabeçalho de cache? O controle de cache não é o único cabeçalho que afeta o cache. A maioria dos servidores da Web envia cabeçalhos da última modificação para ativos estáticos, como arquivos Javascript.
Tim Fountain

Respostas:

18

Se não houver Cache-Controlcabeçalho e Expirescabeçalho, mas houver um Last-Modifiedcabeçalho (que a maioria dos servidores da Web envia por padrão para ativos estáticos), a maioria dos navegadores usará a atualização heurística para determinar por quanto tempo armazenar em cache esse ativo.

O cálculo típico para isso (sugerido pela RFC 7234 ) é:

(current time - last modified time) / 10

Portanto, por exemplo, se a última vez modificada para uma imagem declarar que foi alterada há 60 dias, um navegador pode decidir que poderia usar razoavelmente a versão em cache local dessa imagem por 6 dias antes de procurar uma nova versão.

Observe que, na maioria dos casos, se você clicar em atualizar, estará dizendo ao navegador para buscar uma versão nova; portanto, nessa situação, essa lógica não se aplicaria.

Fonte de Tim
fonte
11
E se não houver Last-Modifiedcabeçalho?
bertonc96 6/04