Eu tenho um site PHP que possui muitas páginas geradas dinamicamente. Eu estou tentando transformar em mod_cache para ajudar a melhorar o desempenho, porque na maioria dos casos, o conteúdo não muda em um determinado dia.
Eu configurei o mod_cache da melhor maneira possível, seguindo exemplos em toda a web, incluindo a página mod_cache no apache .org . Quando eu defino LogLevel debug
, vejo um pouco de informação sobre o cache que não está acontecendo. Existem muitos pares de linhas como esta:
[Fri Jun 01 17:28:18 2012] [debug] mod_cache.c(141): Adding CACHE_SAVE filter for /foo/bar
[Fri Jun 01 17:28:18 2012] [debug] mod_cache.c(148): Adding CACHE_REMOVE_URL filter for /foo/bar
O que é bom, porque eu defini CacheEnable disk /foo
, para indicar que eu quero tudo sob / foo em cache. Eu sou novo no mod_cache, mas o meu entendimento sobre essas linhas é que isso significa apenas que o mod_cache reconheceu que a URL deve ser armazenada em cache, mas supõe-se que haja mais linhas indicando que está salvando os dados em cache e em seguida, recuperando-os posteriormente em ocorrências subsequentes para o mesmo URL.
Eu posso acessar a mesma URL até ficar com a cara azul, seja com a atualização da F5 ou não, ou com navegadores diferentes ou computadores diferentes. É sempre esse par de linhas que aparece nos logs e nada mais.
Quando eu defino CacheEnable disk /
, vejo mais atividade. Mas não quero armazenar todo o site em cache, e há muitos subcaminhos diferentes no site, por isso não quero ter que modificar o código para definir no-cache
cabeçalhos em todos os locais necessários.
Eu vou mencionar que mod_rewrite está em uso aqui, reescrevendo / foo / bar para algo como index.php?baz=/foo/bar
, mas meu entendimento é que o mod_cache usa o URL de pré-reescrita, não o URL de pós-reescrita.
Tanto quanto eu posso dizer, eu tenho os cabeçalhos de resposta não ficando no caminho do cache. Aqui está um exemplo de um hit:
Cache-Control:must-revalidate, max-age=3600
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:16790
Content-Type:text/html
Date:Fri, 01 Jun 2012 21:43:09 GMT
Expires:Fri, 1 Jun 2012 18:43:09 -0400
Keep-Alive:timeout=15, max=100
Pragma:
Server:Apache
Vary:Accept-Encoding
mod_cache config é o seguinte:
CacheRoot /var/cache/apache2/
CacheDirLevels 3
CacheDirLength 2
CacheEnable disk /foo
O que está atrapalhando o mod_cache fazendo seu trabalho de armazenamento em cache?