Pergunta de idade máxima do controle de cache

1

Estou tentando entender a configuração Cache-Control: max-age = 0 abaixo:

Este é um snipet do HTTP Live Headers para uma imagem estática em nossa página de destino após a atualização:

If-Modified-Since: Sat, 23 Jul 2011 02:05:28 GMT
If-None-Match: "21246-eb05-4a8b30415ea00"
**Cache-Control: max-age=0**

HTTP/1.1 304 Not Modified
Date: Tue, 06 Sep 2011 20:59:29 GMT
Server: IBM_HTTP_Server
Connection: Keep-Alive
Keep-Alive: timeout=6
Etag: "21246-eb05-4a8b30415ea00"

Eu vejo o nosso Cache-Control mostra um max-age=0 . Eu encontrei esta explicação:

Cache Control: max-age

This is the HTTP 1.1 equivalent of the earlier Expires header available in HTTP 1.0. It implicitly tells the browser it may cache the page, but must re-validate with the server if the max-age is exceeded. Setting max-age to zero ensures that a page is never served from cache, but is always re-validated against the server.

Se isso estiver correto, nunca devemos puxar a imagem do cache do navegador, o que, se você olhar para o 304 acima, não está correto? O que realmente significa max-age=0 ?

Nós não temos configurações de cache configuradas manualmente no httpd.conf do Apache, então eu suponho que estamos usando padrões para caching / etags.

    
por roacha 06.09.2011 / 23:52

1 resposta

1

A chave está na última frase da explicação que você postou:

Configurar max-age para zero garante que uma página nunca seja servida do cache, mas é sempre validada novamente no servidor.

No exemplo que você colou, o cliente já tem o recurso em seu cache e pode veiculá-lo. No entanto, devido à idade máxima, o cliente entrará em contato primeiro com o servidor e perguntará se ele foi modificado. Na resposta do servidor que você colou, parece que o ativo não foi alterado e o servidor está corretamente 'revalidando' (304) que a versão do cliente está correta (sem precisar enviar o ativo pela rede, portanto, há alguma benefício).

Se a max-age tivesse sido algo maior, o navegador poderia ter servido o ativo do cache sem ter que perguntar nada ao servidor.

    
por 07.09.2011 / 04:47