Varnish 在多台伺服器前進行版本控制

Varnish 在多台伺服器前進行版本控制

我在多個網絡伺服器前面有 Varnish,我可以將它們作為 Varnish 本地運行或通過 nginx 通過上游檢查運行,但只緩存靜態內容(毫不奇怪),也尊重查詢字符串,即

/main.css?v=1/main.css?=v2單獨緩存

我逐一更新伺服器,事實上,所有這些都不能在不停機的情況下完全相同的時間完成,一般部署的事情。

如果main.css更新於後端,我根據新的網頁版本向清漆和請求發送請求/main.css?=v2,它可能仍然會在具有舊版本且尚未更新的計算機上查找文件main.css,所以,現在我在緩存中獲取 v1 作為v2,我無能為力,除非TTL過期(為時已晚)。

我可以透過請求手動使快取失效,這樣就可以了。

是否有任何自動化的解決方案,無需手動幹擾重寫軟體以回饋給varnish?喜歡:

  1. 探針良好後,是否有可能在後端出現時使快取過期?
  2. 還要別的嗎?

謝謝

答案1

如果您載入此程式碼,或適應您的 varnish 版本,則可以傳送 PURGE 類型的請求,其中請求 URL 與您要清除的內容匹配,以從 varnish 快取中擦除該項目。您可以使用它在部署過程結束時透過 cURL 命令或類似命令基本上自動選擇性地清除 Varnish 伺服器。

https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl

相關內容