Estou um pouco confuso sobre qual é a melhor prática ao usar o Varnish: vi muitos sites onde sei que eles estavam usando o Varnish, que tinha Cache-Control: no-store, no-cache, must-revalidate
cabeçalhos HTTP ativados. O conteúdo do site deles não muda há muito tempo - então por que eles não estão usando o cache do navegador? Talvez eles queiram ter um controle melhor sobre o conteúdo, caso precisem alterar algo rapidamente, que de outra forma estaria em uma condição obsoleta no cache do navegador?
Então, basicamente eu gostaria de saber se devo aproveitar o cache do Varnish AND Browser, ou apenas o Varnish para um site, que serve conteúdo que não muda? Existe alguma regra aqui, o que seria "melhor prática"? Normalmente, eu teria optado pelo cache do Varnish AND Browser, mas os sites mencionados acima me deixaram confuso sobre isso.
Você deve usar os dois e essas são 2 coisas totalmente diferentes.
Os dois caches podem ter um tempo de vida diferente para uma entrada em cache / política de cache diferente e isso é bom. Depende da natureza do recurso que você está armazenando em cache.
Páginas (HTML)
Só porque você vê
Cache-Control: no-store, no-cache, must-revalidate
ao verificar um site, por exemplo, viacurl
, isso não significa que não há verniz e não armazena em cache.Veja o Magento 2, por exemplo. O próprio Magento envia:
Isso é o que Varnish vê. Portanto, a página será armazenada em cache pelo Varnish adequadamente por 1 dia. No entanto, no Varnish VCL para Magento 2, ele será modificado
Cache-Control
na saída, para garantir que os navegadores não armazenem em cache. Então a resposta que você verá:Por que é assim:
Ativos estáticos
No navegador
Você normalmente deseja armazenar em cache ativos estáticos por navegador, é por isso que, para esse tipo de recurso, você veria os cabeçalhos Far Future Expires, como o seguinte:
Em verniz
Para esses recursos, muitas pessoas gostam de configurar o Varnish para não armazená-los em cache. Isso ocorre porque não há trabalho pesado do PHP para emitir esses arquivos pelo servidor, então faz pouco sentido tê-los em cache no servidor. Especialmente levando em consideração que o cache Varnish usa o back-end de armazenamento RAM por padrão (você pode particionar seu cache para arquivos estáticos ).
"Talvez eles queiram ter um controle melhor sobre o conteúdo, se precisarem mudar algo rapidamente, o que de outra forma estaria em uma condição obsoleta no cache do navegador?"
Você respondeu sua própria pergunta ali mesmo ;)
É problemático publicar novo conteúdo para invalidar caches sobre os quais você não necessariamente tem controle, e invalidar rapidamente caches antigos é um grande benefício para o lançamento rápido de novo conteúdo. Se você não quer se preocupar com isso ou não precisa, você pode deixar o cache dos navegadores para reduzir a carga em sua infraestrutura.