Verniz: armazenar em cache todo o conteúdo até uma determinada data?

Verniz: armazenar em cache todo o conteúdo até uma determinada data?

Existe uma maneira de configurar o Varnish para armazenar tudo em um determinado caminho até uma data que eu definir?

Meu site é atualizado uma vez por mês, então eu simplesmente gostaria de servir conteúdo em cache até então.

Responder1

Basta adicionar o campo de cabeçalho

Expires: Thu, 01 Dec 1994 16:00:00 GMT

a cada resposta. E, claro, marque a data para o final do mês. O verniz deve respeitar este campo de cabeçalho. E certifique-se de remover todos os cabeçalhos de controle de cache que possam desabilitar o cache (idade máxima, sem cache, etc.).

Responder2

No Varnish 7.4, estou usando isso para fazer com que todo o conteúdo em cache expire à meia-noite de amanhã (GMT para facilitar):

set beresp.ttl = (std.time(regsub(now, "^(.+?)\d{2}:\d{2}:\d{2}(.+?)$", "\100:00:00\2")) + 1d - now);

O que faz:

  1. nowquando usado como STRING é convertido em um texto como 'Ter, 20 de fevereiro de 2018 09:30:31 GMT' (documentos)
  2. regsub(<#1>, "^(.+?)\d{2}:\d{2}:\d{2}(.+?)$", "\100:00:00\2")substitui a parte da hora por 00:00:00, então é meia-noite de hoje
  3. std.time(<#2>)converte o tempo do tipo STRING para o tipo TIME, para que possa ser usado em aritmética de tempo
  4. <#3> + 1d - nowtransforma a meia-noite de hoje na meia-noite de amanhã e calcula os segundos restantes, obtendo um valor paraberesp.ttl

Ainda estou testando, mas na verdade estou obtendo uma idade: 3.872 para uma página que solicitei inicialmente algumas horas antes da meia-noite, então tenho certeza disso.

Responder3

Defina um ttl = 30 dias e o Varnish servirá exatamente o mesmo objeto por 30 dias.

informação relacionada