我在多個網絡伺服器前面有 Varnish,我可以將它們作為 Varnish 本地運行或通過 nginx 通過上游檢查運行,但只緩存靜態內容(毫不奇怪),也尊重查詢字符串,即
/main.css?v=1
並/main.css?=v2
單獨緩存
我逐一更新伺服器,事實上,所有這些都不能在不停機的情況下完全相同的時間完成,一般部署的事情。
如果main.css
更新於一後端,我根據新的網頁版本向清漆和請求發送請求/main.css?=v2
,它可能仍然會在具有舊版本且尚未更新的計算機上查找文件main.css
,所以,現在我在緩存中獲取 v1 作為v2,我無能為力,除非TTL過期(為時已晚)。
我可以透過請求手動使快取失效,這樣就可以了。
是否有任何自動化的解決方案,無需手動幹擾重寫軟體以回饋給varnish?喜歡:
- 探針良好後,是否有可能在後端出現時使快取過期?
- 還要別的嗎?
謝謝
答案1
如果您載入此程式碼,或適應您的 varnish 版本,則可以傳送 PURGE 類型的請求,其中請求 URL 與您要清除的內容匹配,以從 varnish 快取中擦除該項目。您可以使用它在部署過程結束時透過 cURL 命令或類似命令基本上自動選擇性地清除 Varnish 伺服器。
https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl