Eu adicionei o Varnish 4.0 a um servidor do CentOS 6 que executa o cPanel para armazenar em cache um site que eu desenvolvi. Estou tentando implementar stale-while-revalidate
para garantir que todos os usuários recebam uma versão em cache de uma página, de modo que, se a max-age
de 2 minutos tiver expirado, retornar uma cópia obsoleta da página seria suficiente por um período de três meses e o servidor regenera o objeto de cache, se necessário, em segundo plano.
Um exemplo de conjunto de cabeçalhos de resposta sendo retornados é o seguinte:
Accept-Ranges:bytes
Age:539
Cache-Control:public, max-age=120, stale-while-revalidate=7889220
charset:utf-8
Connection:keep-alive
Content-Length:54511
Content-Type:text/html; charset=utf-8
Date:Mon, 14 Sep 2015 12:52:00 GMT
Expires:Mon, 14 Sep 2015 12:54:01 GMT
grace:7889220s
Pragma:cache
X-Cache:HIT
X-Cache-Hits:2
O mecanismo parece funcionar em um ponto. No caso acima, uma cópia em cache é retornada e a próxima solicitação retorna corretamente uma cópia em que o Age
está definido como 10, por exemplo (ou seja, 10 segundos se passaram desde que o cache foi redefinido no segundo plano). No entanto, em algum momento no futuro (na ordem das horas), uma solicitação para a mesma página resulta em um erro de cache e a página parece atingir o back-end diretamente, com os cabeçalhos de resposta indicando um Age
de 0 Não sei dizer por que uma cópia obsoleta não está sendo devolvida.
Não tenho experiência com o Verniz, e estou usando uma versão do um modelo de amostra 4.0 do Vernnish por Mattias Geniar, modificado para Craft CMS (um PHP CMS no qual o site é construído).
Existe alguma coisa no arquivo VCL que possa estar causando os erros do cache ou é provável que seja um problema de configuração do servidor?