![Reduce origin load, save on cloud egress fees, and maximize cache hits with Cache Reserve](https://blog.cloudflare.com/content/images/2022/11/Cache-Reserve-Open-Beta.png)
今年早些時候,我們推出了 Cache Reserve。Cache Reserve 利用 R2 的持久資料儲存,幫助使用者更長時間地從 Cloudflare 的快取中提供內容。從 Cloudflare 的快取中提供內容能夠減少從原始站點獲取內容的輸出費用帳單,從而給網站營運者帶來利益,同時還能更快地載入內容,為網站訪客帶來好處。
Cache Reserve 已經進行了幾個月的封閉測試,同時我們從初始使用者處收集到回饋意見,並繼續開發該產品。在對此回饋意見進行幾輪的反覆運算後,今天,我們非常激動地宣佈,Cache Reserve 正式進入開放測試階段——使用者無需再苦苦等待,現在即可對其進行測試,並將其整合至內容交付策略中。
如果您想瞭解 Cache Reserve 能夠給您帶來的好處,並給我們提供一些回饋意見,則可以前往 Cloudflare 儀表板,導覽到 Caching 區段,按下一個按鈕以啟用 Cache Reserve。
Cache Reserve 如何適應更大的圖景?
從 Cloudflare 的快取提供的內容,其旅程始於原始伺服器,也就是內容託管之處。當要求到達原始站點時,原始站點會對回應所需的內容進行編譯,並將其傳回給訪客。
訪客與原始伺服器之間的距離可能會影響資產的效能,因為其可能需要經過一段長距離才能進行回應。因此,使用者需要支付一定的費用,使內容從原始站點上的儲存位置移動到要求內容的訪客所在位置。這些費用稱為「頻寬」或「輸出」費用,對於在雲端提供者託管其內容的使用者而言,這是發票上常見的月度明細項目。
![](https://blog.cloudflare.com/content/images/2022/11/Response-Flow.png)
Cloudflare 的 CDN 位於原始站點和訪客之間,會評估原始站點的回應以瞭解其是否可以快取。如果可以將其新增至 Cloudflare 的快取中,則在下次收到對該內容的要求時,Cloudflare 可以使用快取資產進行回應,這意味著無需將要求傳送至原始站點,從而減少客戶的輸出費用。我們還會在靠近訪客的資料中心中快取內容,以改善效能,縮短回應的傳輸時間。
為了更長時間地保留快取資產,幾年前我們引入了分層快取,將我們所擁有的 250 多個全球資料中心組織成一個包含下層(通常更接近訪客)和上層(通常更接近原始站點)的層次結構。無法從下層的快取中提供內容要求時,會先檢查上層,然後再前往原始站點獲取最新的內容副本。將我們的資料中心組織成多層,並在訪客的要求和原始站點之間放置多個快取,幫助我們在正確的位置更長時間地快取內容。
為什麼會發生快取未命中?
當 Cloudflare 無法從快取中提供內容且必須返回到原始站點擷取最新副本時,就會發生未命中。當客戶將快取控制時間設定為內容過時(陳舊)且需要重新驗證的時間時,可能會發生這種情況。另一個影響因素是,網路希望快取內容的保留時長,這一因素較為複雜,可能會因逐出標準而波動。
CDN 必須考慮是否需要在快取空間已滿時提前逐出內容,最佳化其他資產的儲存空間。Cloudflare 會使用稱為「最近最少使用」或 LRU 的演算法,基於快取內容的最近要求情況來排列逐出的優先順序。這意味著,即使快取控制表示某段內容應快取數天,我們仍有可能將其提前逐出(若為該快取中要求次數最少的內容),以便快取更常用的內容。
這對大多數客戶和網站訪客來說都很效,但時常會讓人產生困惑,為什麼內容會意外地顯示未命中。如果沒有發生逐出,則需要將內容快取至離要求該資料的訪客較遠的資料中心中,這會損害資產的效能,導致 Cloudflare 的網路營運效率低下。
但是,某些客戶擁有大型內容庫,他們可能長期不會要求其中的內容。若使用傳統快取,則這些資產可能會被逐出,若再次被要求,則會從原始站點予以提供。資產需要在網際網路上保持常用才能保留在快取中,這並不容易,因為常用或流行的內容不斷變化。將不再熱門的內容逐出,意味著當需要從原始站點重複拉取該內容時,將對客戶收取額外的原始站點輸出費用。
![](https://blog.cloudflare.com/content/images/2022/11/Cache-Reserve-Response-Flow.png)
進入 Cache Reserve
這正是 Cache Reserve 的亮點。Cache Reserve 充當最終的上層資料中心,保留本應從快取中逐出的內容。一旦允許進入 Cache Reserve,內容便可儲存更長的時間(預設為 30 天)。如果在此期間收到另一個要求,則可以再延長 30 天(依此類推),或者直到快取控制表示我們不應再從快取中提供該內容。Cache Reserve 充當保留所有可快取內容的安全網,客戶無需擔心不必要的快取逐出和原始站點輸出費用。
Cache Reserve 如何節省輸出費用?
Cache Reserve 的承諾是,對於很少被要求且可能從快取中逐出的長尾內容,命中率將提高,原始站點輸出費用將減少。
不過,該產品還能帶來額外的輸出節省。例如,物件在未命中時寫入 Cache Reserve。這意味著,當在快取未命中時從原始站點擷取內容時,我們都會使用該內容對要求進行回應,同時還將資產寫入 Cache Reserve,因此客戶可以在長時間內提供該資產而不必支付輸出費用。
Cache Reserve 設計為搭配使用分層快取,以最大程度地實現原始站點防護功能。當下層和上層都存在快取未命中時,將檢查 Cache Reserve,如果在其中出現命中,則在該回應返回至訪客時,將同時在下層和上層中進行快取,而原始站點無需查看該要求或提供任何其他資料。
Cache Reserve 基於 R2 成本以低價實現了這些原始站點輸出節省。有關 Cache Reserve 價格和操作的更多資訊,請參閱這裡的文件。
在 Cloudflare 的開發人員平台上擴充 Cache Reserve
當我們第一次宣佈推出 Cache Reserve 時,反響熱烈。超過 20,000 名使用者希望存取測試版,關於人們希望如何使用 Cache Reserve,我們很快發現了一些有趣的事情。
我們發現的第一個重大挑戰是,使用者和我們一樣討厭輸出費用,並希望確保在 Cache Reserve 中快取盡可能多的內容。在封閉測試期間,我們看到的使用情況是,每秒持續實作超過 8,000 個 PUT 作業,以及以每秒超過 3,000 個 GET 的速度提供物件。我們還為一些大客戶快取了大約 600Tb 的內容。我們知道,我們希望將該產品開放給任何想要使用它的人,為了擴充功能以滿足這種需求,我們需要儘快進行一些變更。因此,我們轉向了 Cloudflare 的開發人員平台。
Cache Reserve 使用其與 S3 相容的 API 將資料儲存在 R2 上。在背景下,R2 使用我們高效能且可擴充的開發人員原語(Workers 和 Durable Objects)處理物件儲存系統的所有複雜性。我們決定使用開發人員平台工具,因為它讓我們快速實作不同的擴充策略。在 Cloudflare 開發人員平台上進行建置的優勢在於,可以輕鬆對 Cache Reserve 進行實驗,以瞭解如何最好地分配我們看到的高負載,同時對使用者遮罩了 Cache Reserve 運作方式的複雜性。
只需按一下按鈕,Cache Reserve 即可執行以下功能:
- 在快取未命中時,Pingora(我們的新 L7 代理)會聯絡原始站點獲取內容,並將回應寫入 R2。當內容繼續返回給訪客時,就會發生這種情況(從而避免不必要的延遲)。
- 在 R2 內部,一個 Worker 將內容寫入 R2 的持久資料儲存,同時還使用 Durable Objects 儲存追蹤 Pingora 傳送的有關物件的重要中繼資料(如原始站點標頭、新鮮度值和保留資訊)。
- 當下次要求該內容時,Pingora 會計算快取鍵,查找資料在 R2 中的儲存位置。快取鍵的雜湊確定了 R2 中的物件名稱及其寫入的儲存桶,因為每個區域的資產都以碎片方式分布在多個儲存桶,以分配負載。
- 找到該內容后,Pingora 附加相關中繼資料,並將內容從 R2 傳送到最近的上層進行快取,然後傳送到下層,最後返回給訪客。
![](https://blog.cloudflare.com/content/images/2022/11/Screen-Shot-2022-11-14-at-4.31.20-PM.png)
這就像變魔法一樣!以上所有作業均無需使用者進行管理。將 R2、Workers、Durable Objects、Pingora 和分層快取結合使用時,我們能夠快速建置 Cache Reserve 並對其進行變更,以根據需要進行擴充...
Cache Reserve 的後續方案
除了我們為擴充 Cache Reserve 所做的工作之外,開放該產品也意味著在 Cloudflare 提供更多的功能以及進行更多整合。我們計劃為 Cache Reserve 使用者提供額外的分析及指標,以便他們能夠清楚地瞭解到 Cache Reserve 中的內部活動以及節省了多少輸出費用。我們還計劃與 R2 建置更複雜的整合,因此,如果客戶想要開始管理其儲存,他們就能夠輕鬆完成過渡。最後,我們將努力為客戶提供更多選項,以精準控制哪些內容符合 Cache Reserve 條件。對於客戶在 Cloudflare 上控制和自訂其快取的方式而言,這些功能僅僅只是開始。
到目前為止,我們收到了哪些回饋意見?
作為 Cloudflare 的長期客戶,我們非常想要部署 Cache Reserve 來節省成本,並為終端使用者提高效能。確保我們的應用程式始終為我們的全球合作夥伴和送貨騎手提供最佳效能是 Delivery Hero 的主要關注點。憑藉 Cache Reserve,我們的快取命中率提高了 5%,使我們能夠縮減基礎結構的規模,簡化營運全球網站所需的設施,並節省更多成本。
Wai Hang Tang,Delivery Hero 工程部總監
Anthology 使用 Cloudflare 的全域快取為我們在學校及大學的終端使用者大幅提高內容效能。透過按下一個按鈕來啟用 Cache Reserve,我們能夠為師生們提供出色的體驗,並將每日輸出流量減少三分之二。
Paul Pearcy,Anthology 高級主管工程師
在 Enjoei,我們一直想方設法幫助我們的終端使用者網站更快、更高效地運作。透過使用 Cloudflare Cache Reserve,我們能夠將快取命中率大幅提高 10% 以上,從而降低了原始站點輸出費用。Cache Reserve 還提高了我們在南美洲的許多商家網站的效能,改善他們在整個網際網路(Google、Criteo、Facebook、Tiktok)上的 SEO 和可發現性,而且設定所需時間極短。
Elomar Correia,DevOps SRE 負責人| Enjoei 企業解決方案架構師
在現場活動產業,可快取內容的規模和需求可能非常不穩定,導致輸出費用出現不可預測的波動。此外,使資料盡可能靠近使用者,對於使用產品的高流量和低頻寬場景(例如會議和音樂節)中的客戶體驗至關重要。Cache Reserve 幫助我們緩解這兩個問題,同時最大限度地減少對工程團隊的影響,為我們帶來比現有解決方案更可預測的費用和更低的延遲。
Jarrett Hawrylak,Patron Technology 工程部 | 企業工單部副總裁
我如何立即開始使用?
截至今天,Cache Reserve 已進入開放測試階段,這意味著任何想要使用它的人都可以對其進行存取。
若要使用 Cache Reserve:
- 只需前往儀表板中的 Caching 動態磚即可。
- 導覽至 Cache Reserve 頁面,然後按啟用資料同步按鈕(或購買按鈕)。
企業客戶可以與其 Cloudflare 客戶團隊合作以存取 Cache Reserve。
客戶可以查看有關快取的資料量以及儀表板的 Cache Reserve 區段中看到的操作數的基線指標,確保 Cache Reserve 運作正常。透過使用 Logpush v2 並使用欄位 CacheReserveUsed 查找 HTTP 要求,查看「Cache Reserve」提供的特定要求。
我們將繼續確保快速分類您提供給我們的回饋意見,並對產品進行改進,以幫助確保 Cache Reserve 易於使用且好處多多,使其成為減少快取內容輸出費用的理想選擇。
![](https://blog.cloudflare.com/content/images/2022/11/Screen-Shot-2022-11-10-at-12.00.31-PM.png)
試用
會有更多的人使用 Cache Reserve,我們感到很興奮。我們會持續投入,對 Cache Reserve 進行更多令人興奮的開發,為您提供建置完美快取所需的全部工具。立即試用 Cache Reserve,並告訴我們您的想法。