
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:
now
quando usado como STRING é convertido em um texto como 'Ter, 20 de fevereiro de 2018 09:30:31 GMT' (documentos)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 hojestd.time(<#2>)
converte o tempo do tipo STRING para o tipo TIME, para que possa ser usado em aritmética de tempo<#3> + 1d - now
transforma 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.