Varnish:快取所有內容直到某個日期?

Varnish:快取所有內容直到某個日期?

有沒有一種方法可以配置 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);

它能做什麼:

  1. now當用作 STRING 時,會轉換為文本,如 'Tue, 20 Feb 2018 09:30:31 GMT' (文件
  2. regsub(<#1>, "^(.+?)\d{2}:\d{2}:\d{2}(.+?)$", "\100:00:00\2")將時間部分替換為 00:00:00,即今天午夜
  3. std.time(<#2>)將時間從STRING類型轉換為TIME類型,以便可以在時間算術中使用
  4. <#3> + 1d - now將今天午夜變成明天午夜併計算剩餘秒數,獲得一個值beresp.ttl

仍在測試它,但我實際上得到了一個年齡:3872 對於我最初在午夜前幾個小時請求的頁面,所以我對此持肯定態度。

答案3

設定 ttl = 30 天,Varnish 將在 30 天內為完全相同的物件提供服務。

相關內容