Armazenando strings de consulta em cache em um proxy Apache

Armazenando strings de consulta em cache em um proxy Apache

Tive problemas para fazer o disk_cache funcionar e não consegui entender o porquê. Esta foi a seção relevante da minha configuração

# Caching
CacheRoot   "/var/cache/apache2/"
CacheEnable disk /

Eu estava cronometrando uma solicitação como a seguinte, mas o cache parecia não ter efeito, já que a resposta consumia 7 segundos, não importa o que acontecesse.

time curl -k https://customer1.myhosts.com/appserver/slow_request?param1=fooBar

Depois de ativar o log de depuração, encontrei a seguinte instrução nos logs, explicando por que nenhum cache estava sendo feito:

[Sexta-feira, 24 de agosto 17:22:01 2012] [depuração] mod_cache.c (552): cache: não armazenado em cache. Motivo: string de consulta presente, mas sem tempo de expiração explícito

Acontece que isso é mencionado no Guia de cache do Apache:

Se o URL incluir uma string de consulta (por exemplo, de um método GET de formulário HTML), ele não será armazenado em cache, a menos que a resposta especifique uma expiração explícita, incluindo um cabeçalho "Expires:" ou a diretiva max-age ou s-maxage do "Cache -Control:" cabeçalho, conforme seções 13.9 e 13.2.1 do RFC2616.

OK, então adiciono o seguinte (retirado deEste artigo) no Apache

Header set Cache-Control "max-age=290304000"

Ainda não funciona, desta vez recebo a mensagem

"... não armazenado em cache. Motivo: nenhum cabeçalho Last-Modified, Etag ou Expires"

Agora, esta é uma história diferente. Como posso resolver isso sem mexer no código do servidor de aplicativos?

Responder1

A única maneira de fazer com que o Apache armazenasse em cache as respostas do servidor de aplicativos era adicionando os cabeçalhos solicitados pelo Apache no log às respostas. Acabou sendo muito fácil criar um filtro JAX-RS.

Então, depois de adicionar Last-Modified e um cabeçalho Expires, a única coisa necessária foram as duas linhas a seguir na minha configuração do Apache.

CacheRoot   "/var/cache/apache2/"
CacheEnable disk / 

Responder2

informação relacionada