Estou coçando um pouco a cabeça nisso. Um site Drupal que eu corro está configurando cabeçalhos de cache apropriados que devem indicar que a página pode ser armazenada em cache por 15 minutos. No entanto, sempre que chego à página, ela sempre envia uma solicitação GET em vez de carregar a página do cache.
Não atualizo a página com força toda vez, o que suponho que indique ao navegador que desejo liberar os caches. Não tenho nenhum bloqueio de cache no modo de desenvolvedor ativado.
Esse é apenas o comportamento padrão dos navegadores ou estou perdendo algo óbvio? Aqui estão os cabeçalhos de solicitação / resposta que acessam minha página inicial nas ferramentas de desenvolvimento do FireFox:
NOTA / EDIT : Algumas pessoas sugeriram que isso estava relacionado ao Expires
cabeçalho estar no passado. No entanto, Cache-Control
substitui qualquer item Expires
, conforme descrito na RFC 2616 , Seção 14.9.3. O Drupal inclui isso para desativar o armazenamento em cache em clientes HTTP 1.0 mais antigos, que não suportam o Vary
cabeçalho mais avançado que o Drupal precisa para o armazenamento em cache adequado.
Nos programas CMS, algumas páginas exigem interação com o banco de dados para exibir o conteúdo dinâmico específico da solicitação dos usuários. A página inteira não pode ser armazenada em cache ou não mostraria o conteúdo correto para o usuário.
Um exemplo disso na prática é uma página de carrinho de compras / checkout de comércio eletrônico. Como a página parece diferente a cada vez, não há como armazená-la totalmente em cache. Sem saber mais sobre a página específica, é difícil saber se a página que você está referenciando requer envolvimento do banco de dados.
fonte
Além das outras respostas, o
Expires
cabeçalho está no passado, e também por isso que os navegadores não armazenam em cache a página.fonte
Cache-Control
cabeçalho está presente. Ele substitui oExpires
cabeçalho dos clientes HTTP 1.1. Veja ietf.org/rfc/rfc2616.txt , seção 14.9.3.