Não existe algo como "Última modificação não funciona". Este cabeçalho indica simplesmente que o recurso de data foi modificado pela última vez. Os clientes podem emitir solicitações "se não modificadas desde" posteriormente, mas isso não é importante para sua situação.
É natural que os pedidos subsequentes retornem exatamente os mesmos cabeçalhos. Objetos em verniz são armazenados em cache, incluindo as informações de cabeçalhos. Então, quando o Varnish extrai uma entrada em cache, ela retornará uma cópia exata dela.
Entendendo
Você está lidando com dois caches ao mesmo tempo: Varnish e cache do navegador. Você tem apenas um conjunto de cabeçalhos HTTP por solicitação. Você não pode especificar um HTTP Expires para o navegador e depois outro apenas para o verniz.
Portanto, se você quiser colocar as coisas em cache de maneira diferente (e você faz), uma solução é ajustar beresp.ttl
no verniz para a quantidade de tempo durante o qual você deseja relaxar o backend do PHP, ou seja, 24 horas.
Em algum lugar na VCL:
sub vcl_backend_response {
# A TTL of 24h
# set beresp.ttl = 24h;
}
Então, considerando que você mantém seu código PHP existente, o Varnish armazena em cache a primeira requisição para uma página por 24 horas e faz com que seja armazenada em cache pelos navegadores por 10 minutos.
Quando o artigo for atualizado, você terá que limpar o cache de verniz, também conhecido como Invalidação de cache. Veja algumas dicas sobre esta página (role até o final).
The reason for that is the user wants to see the change immediately once the page is modified in the backoffice.
E ainda assim você quer que eles tenham 10 minutos de cache do navegador:)