Na minha experiência, as 3 razões mais comuns pelas quais o Squid se recusa a armazenar o conteúdo em cache são:
- Permissões do diretório de cache e você cuidou disso. Bom:)
-
http_access
, mas não é o seu caso, porque você está vendo TCP_MISS
linhas no seu access.log
-
refresh_pattern
diretivas
refresh_pattern
directiva (s) controla como o Squid considera objetos novos ou obsoletos, particularmente em relação à maneira como o seu navegador faz os pedidos, e quais cabeçalhos HTTP de controle do cache são trocados.
As linhas refresh_pattern
que você tem em sua configuração são as linhas padrão do Squid. No entanto, acabei de instalar o Squid no Ubuntu há duas semanas e, com esses padrões, ele armazena quase nada em cache.
A documentação do Squid sobre refresh_pattern deve explicar o significado de cada linha, mas eu realmente não consigo entender o que essa documentação significa. E, aparentemente, eu ' não estou sozinho :)
Sugiro que você adicione um ou mais dos seguintes padrões e teste arquivos / URLs específicos até que esteja satisfeito. Exemplo:
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 43200
Com este, você está dizendo ao Squid para considerar todos os ícones / imagens armazenáveis em cache por pelo menos 1 hora até o máximo de meio dia. Seu navegador pode enviar solicitações HTTP com cabeçalhos de cache específicos que fazem com que o Squid responda com um TCP_MISS
mesmo assim. Para forçar respostas em cache, mesmo quebrando as expectativas do cliente, você pode fazer isso:
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
O mesmo vale para arquivos maiores de filme / áudio / iso:
refresh_pattern -i \.(mp[34g]|swf|wav|...)$ 43200 90% 432000
Se alguma coisa falhar, use um poderoso martelo :) mas eu não recomendo:
refresh_pattern . 3600 80% 14400
com o qual você está dizendo ao Squid que ele pode armazenar em cache tudo por pelo menos 1 hora. No entanto, isso quase certamente irá quebrar aplicativos dinâmicos. Use-o se o servidor que você está tentando armazenar em cache for composto principalmente de conteúdo estático.
Além disso, não se esqueça de maximum_object_size
. Por padrão, é 20Mb . Se os objetos que você está tentando armazenar em cache forem maiores que isso, o Squid não os armazenará em cache. Eu subi 10x para 200Mb. YMMV.
maximum_object_size 204800 KB
BTW, sua linha cache_peer
está incorreta porque aponta para o Apache. Um cache_peer
no speak do squid é outra instância do squid mais alta na hierarquia do cache, que costumava ser um servidor de cache do ISP nos velhos tempos. Apenas remova essa linha.
E boa sorte:)