
今天,我們的網路層已經暴露在世人面前。我們希望在 Web 層前面添加 Varnish,以加速網站並減少對後端的呼叫。然而,我們有一些擔憂,我想知道大多數人如何處理這些問題:
A/B 測試 - 如何測試每個頁面的兩個「版本」並進行比較?我的意思是,清漆如何知道要提供哪個頁面?是否以及如何在每個頁面上保存單獨的版本?
功能推出 - 您將如何設定一個簡單的功能推出機制?假設我想開啟一個新功能/頁面,只佔用 10% 的流量…然後再將其增加到 20%?
您如何處理程式碼部署?每次部署時都會清除整個清漆快取嗎? (我們每天都有部署)。還是你只是讓它慢慢過期(使用TTL)?
關於這些問題的任何想法和例子都是大大地讚賞!
答案1
A/B 測試 - 如何測試每個頁面的兩個「版本」並進行比較?我的意思是,清漆如何知道要提供哪個頁面?是否以及如何在每個頁面上保存單獨的版本?
您有多種選擇:
- 只需將它們暴露在不同的 URL 上即可。
繞過特定 URL 的快取。您可以透過返回
pass
來做到這一點vcl_recv
。像這樣的事情:sub vcl_recv { if (req.url ~ "^/path/to/document") { return (pass); } }
當您公開新版本時,明確清除快取。
功能推出 - 您將如何設定一個簡單的功能推出機制?假設我想開啟一個新功能/頁面,只佔用 10% 的流量…然後再將其增加到 20%?
我不確定是否有一種“簡單”的方法可以做到這一點。由於您可以C
在檔案中放置任意程式碼,.vcl
因此您可以添加一些邏輯來選擇隨機數,然後根據結果選擇適當的後端路徑。
您如何處理程式碼部署?每次部署時都會清除整個清漆快取嗎? (我們每天都有部署)。還是你只是讓它慢慢過期(使用TTL)?
對於重大更改,我們只需清除緩存,對於較小的更改,我們只是讓內容過期。