Eu mantenho um repositório de confiuração Varnish aberto a commits de todos. Era para ser uma boa base para iniciar qualquer tipo de implementação Varnish. Eu a uso como meu Varnish Boilerplate pessoal. E eu, pessoalmente, nunca gostei de configurações como estas:
[code]
# Remove all cookies for static files
if (req.url ~ "^[^?]*\.(css|jpg|js|gif|png|xml|flv|gz|txt|…)(\?.*)?quot;) {
unset req.http.Cookie;
return (lookup);
}
[/code]
O trecho acima vai retirar todos os cookies de arquivos estáticos que fazem com que sejam armazenados em cache por padrão. Por que eu não gosto disso? Porque parece que isso está fazendo com que as pessoas comemorem ao terem um hitrate de 99% em cache, mas na verdade está causando mais um despejo de cache, porque a memória é bastante limitada. O único momento em que você nunca deve armazenar arquivos estáticos em cache é quando você tem memória de sobra.
Arquivos estáticos não provocam “carga”
Claro, eles causam acesso ao disco. Não apenas para a leitura do arquivo, mas também para registrar a sua entrada nos logs do servidor web (se você não tiver excluído o cache de conteúdo estático dos logs do seu servidor). E seu servidor precisa enviar o arquivo de volta para o cliente.
Mas, em toda probabilidade, o seu sistema operacional provavelmente tem seus arquivos estáticos mais frequentes em seu buffer, ou seja, o acesso ao disco não é necessário para fornecer o arquivo. E o seu servidor web deve simplesmente ser bom em fornecer arquivos estáticos, ou você deve considerar a mudança (para, digamos, lighttpd ou nginx).
Você está olhando cegamente para a taxa de cache
Se a configuração padrão armazena em cache todos os arquivos estáticos sem exceção, você vai ver altas hitrates em cache. Você (e seu cliente) serão felizes. E você vai se enganar pensando que os gargalos de desempenho foram resolvidos. Não são os arquivos estáticos que causam sua carga de servidor web, é PHP/Ruby/Perl/ … scripts que estão atingindo o seu banco de dados e estão chamando APIs externas. Esses são os pedidos que precisam ser armazenados em cache, e não um arquivo estático, que não está causando qualquer carga de CPU.
Prossiga com a memória sobressalente
Portanto, o foco deve ser dado às páginas dinâmicas que causam a carga do servidor. Essas solicitações em cache realmente fazem a diferença. Então, se você tem memória livre, abra algumas solicitações de arquivos estáticos para serem armazenados em cache. E continue a acompanhar o tamanho do cache, pois se os arquivos estáticos estão fazendo com que páginas PHP pesadas sejam despejadas da memória, você só irá prejudicar o seu desempenho ainda mais.
Praticamente ninguém consegue armazenar todo o seu conteúdo estático em cache no Varnish. Não sacrifique um pedido de arquivo estático de 5ms para um processamento de script PHP de 500ms. Eu comentei todas as entradas que fazem com que arquivos estáticos sejam armazenados em cache explicando isso, e espero que as pessoas não copiem cegamente os templates de configuração, mas que os leiam e pensem sobre isso.
***
Artigo traduzido pela Redação iMasters, com autorização do autor. Publicado originalmente em http://mattiasgeniar.be/2012/11/28/stop-caching-static-files/




