Como configurar o Apache 2.2.3 para enviar "última modificação" etc

9

e dizer ao navegador para recarregar um objeto (e / ou uma página ... tudo no site) somente se tiver sido modificado desde a última visita ??? htaccess, httpd.conf ... você tem uma diretiva pronta para o meu caso? Muito obrigado

smepie
fonte

Respostas:

5

Observe que os Last-Modifiedcabeçalhos são fracos no cache. A preferência atual é usar Cache-Controlcabeçalhos.

O Google tem um bom artigo sobre isso.

Otimizar cache

Expira e Controle de cache: idade máxima. Eles especificam a "vida útil atualizada" de um recurso, ou seja, o período durante o qual o navegador pode usar o recurso em cache sem verificar se uma nova versão está disponível no servidor da web. Eles são "cabeçalhos de cache fortes" que se aplicam incondicionalmente; ou seja, uma vez definidos e baixados o recurso, o navegador não emitirá nenhuma solicitação GET para o recurso até que a data de validade ou a idade máxima seja atingida.

Última modificação e ETag. Eles especificam alguma característica sobre o recurso que o navegador verifica para determinar se os arquivos são os mesmos. No cabeçalho Última modificação, essa é sempre uma data. No cabeçalho ETag, pode ser qualquer valor que identifique exclusivamente um recurso (versões de arquivo ou hashes de conteúdo são típicos). Last-Modified é um cabeçalho de cache "fraco", em que o navegador aplica uma heurística para determinar se deve buscar o item no cache ou não. (As heurísticas são diferentes entre navegadores diferentes.) No entanto, esses cabeçalhos permitem que o navegador atualize eficientemente seus recursos em cache emitindo solicitações GET condicionais quando o usuário recarrega explicitamente a página. Os GETs condicionais não retornam a resposta completa, a menos que o recurso tenha sido alterado no servidor e, portanto, tenham uma latência menor que os GETs completos.

Eu recomendo o uso de um Cache-Controlou de Expirescabeçalhos, conforme necessário, pois são fortes cabeçalhos de cache. Alguns sistemas ignoram as datas da última modificação.

Você pode usar uma ferramenta como curlou http://redbot.org para verificar os cabeçalhos.

jeffatrackaid
fonte
2
FWIW: "fraco" é algo que o Google inventou. Expiresé um cabeçalho totalmente inadequado para recursos que não expiram. Alguns recursos podem ser modificados, mas não em alguma data de validade. O ponto do Google é que Last-Modifiedrequer um GET condicional, enquanto Expirespermite que o cache do navegador ignore o GET por completo.
Dancrumb 29/07
1
O termo fraco é simplesmente semântica. O ponto é que o uso de Last-Modifiedcabeçalhos na ausência de outras instruções de armazenamento em cache deixa o período de cache para o cliente HTTP. Se um recurso não tiver sido modificado desde a Last-Modifieddata, ele deverá ser considerado novo. Por outro lado, ao usar um cabeçalho Expiresou, Cache-Controla origem pode definir um período de atualização explícito.
jeffatrackaid
1
"fraco" v "forte" é definido pelo tools.ietf.org/html/rfc7232#section-2.1 (Nota também para @Dancrumb)
John Bentley