
내가 설정한 날짜까지 특정 경로 아래에 모든 것을 저장하도록 Varnish를 구성할 수 있는 방법이 있습니까?
내 사이트는 한 달에 한 번씩 업데이트되므로 그때까지는 캐시된 콘텐츠만 제공하고 싶습니다.
답변1
헤더 필드만 추가하세요.
Expires: Thu, 01 Dec 1994 16:00:00 GMT
모든 응답에. 물론 날짜를 월말로 설정합니다. Varnish는 이 헤더 필드를 존중해야 합니다. 그리고 캐싱을 비활성화할 수 있는 모든 캐시 제어 헤더(max-age, no-cache 등)를 제거해야 합니다.
답변2
Varnish 7.4에서는 이것을 사용하여 캐시된 모든 콘텐츠가 내일 자정(편의성을 위해 GMT)에 만료되도록 합니다.
set beresp.ttl = (std.time(regsub(now, "^(.+?)\d{2}:\d{2}:\d{2}(.+?)$", "\100:00:00\2")) + 1d - now);
기능:
now
STRING으로 사용되면 'Tue, 20 Feb 2018 09:30:31 GMT'(문서)regsub(<#1>, "^(.+?)\d{2}:\d{2}:\d{2}(.+?)$", "\100:00:00\2")
시간 부분을 00:00:00으로 바꾸므로 오늘 자정이 됩니다.std.time(<#2>)
시간을 STRING 형식에서 TIME 형식으로 변환하여 시간 연산에 사용할 수 있도록 합니다.<#3> + 1d - now
오늘 자정을 내일 자정으로 바꾸고 남은 초를 계산하여 다음 값을 얻습니다.beresp.ttl
아직 테스트 중이지만 실제로 자정 몇 시간 전에 요청한 페이지에 대해 Age: 3872가 표시되므로 이에 대해 긍정적입니다.
답변3
TTL = 30일로 설정하면 Varnish는 30일 동안 정확히 동일한 개체를 제공합니다.