2022年早些時(shí)候,我們推出了Cache Reserve。Cache Reserve利用R2的持久數(shù)據(jù)存儲,幫助用戶更長久地從Cloudflare的緩存中提供內(nèi)容。從Cloudflare的緩存中提供內(nèi)容能夠降低從源站獲取內(nèi)容的出口費(fèi)用賬單,從而給網(wǎng)站運(yùn)營者帶來利益,同時(shí)還能更快地加載內(nèi)容,為網(wǎng)站訪問者帶來好處。
Cache Reserve的封閉測試持續(xù)了幾個(gè)月的時(shí)間,我們從初始用戶處收集到了一些反饋,并持續(xù)改進(jìn)該產(chǎn)品。在對此反饋進(jìn)行幾輪迭代后,今天,我們非常激動地宣布,Cache Reserve正式進(jìn)入公開測試階段——用戶無需再苦苦等待,現(xiàn)在即可對其進(jìn)行測試,并將其集成至內(nèi)容交付策略中。
如果您想要了解Cache Reserve能夠給您帶來的好處,并為我們提供一些反饋,可以前往Cloudflare儀表板,導(dǎo)航至Caching板塊,按下一個(gè)按鈕,從而啟用Cache Reserve。
Cache Reserve的整體運(yùn)作情況
從Cloudflare的緩存中提供的內(nèi)容,其旅程始于源服務(wù)器,也就是內(nèi)容托管的地方。當(dāng)對內(nèi)容的請求到達(dá)源站時(shí),源站會對響應(yīng)所需的內(nèi)容進(jìn)行編譯,并將其返回給訪問者。
訪問者與源站之間的距離會影響資產(chǎn)的性能,因?yàn)槠淇赡苄枰?jīng)過一段長長的距離才能完成響應(yīng)。正因?yàn)槿绱?,用戶需要支付一定的費(fèi)用,使內(nèi)容從源站上的存儲位置移動到請求內(nèi)容的訪問者所在的地方。這些費(fèi)用稱為“帶寬”或“出口”費(fèi)用,對于在云提供商處托管內(nèi)容的用戶而言,這是發(fā)票上常見的月明細(xì)項(xiàng)目。
Cloudflare的CDN位于源站和訪問者之間,會評估源站的響應(yīng)以了解其是否可緩存。如果能夠?qū)⑵涮砑拥紺loudflare的緩存中,則當(dāng)再一次接收到針對該內(nèi)容的請求時(shí),Cloudflare可以使用緩存的資產(chǎn)作出響應(yīng),這意味著不需要將請求發(fā)送到源站,從而減少我們客戶的出口費(fèi)用。我們還會在靠近訪問者的數(shù)據(jù)中心中緩存內(nèi)容,以改善性能并減少響應(yīng)的傳輸時(shí)間。
為了更長時(shí)間地保留緩存的資產(chǎn),幾年前我們引入了分層緩存,將我們所擁有的250多個(gè)全球數(shù)據(jù)中心整理成一個(gè)包含較低層(通??拷L問者)與較高層(通??拷凑荆┑膶哟谓Y(jié)構(gòu)。無法從較低層的緩存中提供請求的內(nèi)容時(shí),會先檢查較高層,然后再前往源站獲取最新的內(nèi)容副本。將數(shù)據(jù)中心分層通過在訪問者的請求與源站之間放置多份緩存,幫助我們在正確的位置更長時(shí)間地保留緩存內(nèi)容。
為什么會發(fā)生緩存未命中?
當(dāng)Cloudflare無法從緩存中提供內(nèi)容,而必須返回源站檢索最新副本時(shí),就會發(fā)生未命中。當(dāng)客戶將緩存控制時(shí)間設(shè)置為內(nèi)容過時(shí)(陳舊)且需要重新驗(yàn)證的時(shí)間時(shí),可能會發(fā)生此情況。另一個(gè)影響因素是網(wǎng)絡(luò)想要保留緩存內(nèi)容的時(shí)間,這一因素較為復(fù)雜,可能因逐出條件而波動。
CDN必須考慮是否需要在緩存空間已滿時(shí)提前逐出內(nèi)容,為其他資產(chǎn)騰出存儲空間。Cloudflare會使用“最近最少使用”(LRU)算法,基于緩存內(nèi)容的最新請求情況來排列逐出的優(yōu)先順序。這意味著,即使緩存控制設(shè)置為某一內(nèi)容片段緩存的天數(shù),我們?nèi)杂锌赡軐⑵涮崆爸鸪觯ㄈ绻窃摼彺嬷姓埱笞钌俚模?,以便緩存更常用的?nèi)容。
這對于大部分客戶和網(wǎng)站訪問者都運(yùn)作良好,但時(shí)常會讓人們產(chǎn)生困惑,為什么有些內(nèi)容會意外地顯示未命中。如果未發(fā)生逐出,則內(nèi)容將需要緩存到離請求該數(shù)據(jù)的訪問者較遠(yuǎn)的數(shù)據(jù)中心中,這會損害資產(chǎn)的性能,導(dǎo)致Cloudflare的網(wǎng)絡(luò)運(yùn)行效率低下。
然而,部分客戶擁有大型內(nèi)容庫,他們可能長期不會請求其中的內(nèi)容。如果使用傳統(tǒng)緩存,這些資產(chǎn)很有可能被逐出,當(dāng)被再次請求時(shí),則需要從源站提供。資產(chǎn)需要在互聯(lián)網(wǎng)上保持常用才能保留在緩存中,這并不容易,因?yàn)槌S没蛄餍械膬?nèi)容是不斷變化的。將不再熱門的內(nèi)容逐出,意味著當(dāng)需要從源站重復(fù)提取該內(nèi)容時(shí),將對客戶收取額外的源站出口費(fèi)用。
Cache Reserve正式登場
這正是Cache Reserve發(fā)揮作用的地方。Cache Reserve作為最終的上層數(shù)據(jù)中心,保留本應(yīng)從緩存中逐出的內(nèi)容。在提交到Cache Reserve后,內(nèi)容可在此處默認(rèn)儲存30天。如果在該期間內(nèi)進(jìn)來了針對該內(nèi)容的另一個(gè)請求,則會再延長30天(以此類推),或者直到緩存控制表示我們不能再從緩存中提供該內(nèi)容。Cache Reserve可作為保留所有可緩存內(nèi)容的安全網(wǎng),客戶無需再擔(dān)憂不必要的緩存逐出和源站出口費(fèi)用。
Cache Reserve如何節(jié)省出口費(fèi)用?
Cache Reserve的承諾是,對于極少被請求且可能從緩存中被逐出的長尾內(nèi)容,命中率將提高,源站出口費(fèi)用將減少。
然而,該產(chǎn)品還能帶來額外的出口節(jié)省。例如,當(dāng)未命中時(shí),對象將寫入Cache Reserve。這意味著,當(dāng)緩存未命中而從源站提取內(nèi)容時(shí),我們不僅會使用該內(nèi)容響應(yīng)請求,還會將該資產(chǎn)寫入Cache Reserve,這樣,客戶可以在很長時(shí)間內(nèi)提供該資產(chǎn)而不必支付出口費(fèi)用。
Cache Reserve設(shè)計(jì)為與分層緩存搭配使用,以盡可能地避免從源站提供內(nèi)容。當(dāng)在較低層和較高層都出現(xiàn)緩存未命中時(shí),會檢查Cache Reserve,如果在其中出現(xiàn)了命中,則在該響應(yīng)返回至訪問者時(shí),將同時(shí)在較低層和較高層中緩存,源站無需看到該請求或提供任何額外數(shù)據(jù)。
基于R2成本,Cache Reserve以極低的價(jià)格實(shí)現(xiàn)了這些源站出口節(jié)省。如需有關(guān)Cache Reserve價(jià)格和操作的更多信息,請參見此處的文檔。
在Cloudflare的開發(fā)人員平臺上
擴(kuò)展Cache Reserve
當(dāng)我們首次宣布推出Cache Reserve時(shí),反響非常熱烈。超過20,000名用戶想要訪問測試版,關(guān)于人們想要如何使用Cache Reserve,我們很快發(fā)現(xiàn)了一些有意思的事情。
我們發(fā)現(xiàn)的第一項(xiàng)重大挑戰(zhàn)是,用戶和我們一樣討厭出口費(fèi)用,并且希望確保在Cache Reserve中緩存盡可能多的內(nèi)容。在封閉測試期間,我們所看到的使用情況為每秒實(shí)施超過8,000個(gè)PUT操作,以及以每秒超過3,000個(gè)GET的速度提供對象。我們還為部分大客戶緩存了約600Tb的內(nèi)容。我們知道,我們希望將該產(chǎn)品開放給所有想要使用它的人,為了進(jìn)行擴(kuò)展以滿足此需求,我們需要盡快進(jìn)行一些更改。因此,我們將目光轉(zhuǎn)向了Cloudflare開發(fā)人員平臺。
Cache Reserve使用其S3兼容API在R2上存儲數(shù)據(jù)。在后臺,R2利用我們性能極佳且可擴(kuò)展的開發(fā)人員原語(Workers和Durable Objects)處理對象存儲系統(tǒng)的所有復(fù)雜性。我們決定使用開發(fā)人員平臺工具,是因?yàn)樗屛覀兡軌蚩焖賹?shí)施不同的擴(kuò)展策略。在Cloudflare開發(fā)人員平臺上進(jìn)行構(gòu)建的優(yōu)勢是,我們能夠輕松試驗(yàn)Cache Reserve,看看如何最佳分配我們所看到的高負(fù)載,同時(shí)對用戶屏蔽Cache Reserve運(yùn)作機(jī)制的復(fù)雜性。
只需按一個(gè)按鈕,Cache Reserve即可執(zhí)行以下功能:
·當(dāng)發(fā)生緩存未命中時(shí),Pingora(我們的新L7代理)會聯(lián)絡(luò)源站獲取內(nèi)容,并將響應(yīng)寫入R2。這會在內(nèi)容返回給訪問者的過程中進(jìn)行(從而避免不必要的延遲)。
·在R2內(nèi)部,一個(gè)Worker會將內(nèi)容寫入R2的持久數(shù)據(jù)存儲,同時(shí)使用Durable Objects存儲跟蹤Pingora傳送的有關(guān)該對象的重要元數(shù)據(jù)(如源站標(biāo)頭、新鮮度值和保留信息)。
·當(dāng)下一次請求該內(nèi)容時(shí),Pingora會計(jì)算緩存鍵,查找數(shù)據(jù)在R2中的存儲位置。緩存鍵的哈希確定了R2中的對象名稱以及它所寫入的存儲桶,因?yàn)槊總€(gè)區(qū)域的資產(chǎn)都以碎片形式分布在多個(gè)存儲桶中,以分配負(fù)載。
·在找到該內(nèi)容后,Pingora會附加相關(guān)元數(shù)據(jù)并將內(nèi)容從R2發(fā)送至最近的較高層以進(jìn)行緩存,然后發(fā)送至較低層,并最終返回給訪問者。
這就像變魔法一樣!上面的所有操作都不需要用戶進(jìn)行管理。將R2、Workers、Durable Objects、Pingora和分層緩存結(jié)合在一起之后,我們能夠快速構(gòu)建和更改Cache Reserve,以根據(jù)需要擴(kuò)展...
Cache Reserve的后續(xù)計(jì)劃
除了我們?yōu)閿U(kuò)展Cache Reserve所做的工作外,開放該產(chǎn)品也意味著開放更多的功能以及Cloudflare內(nèi)部產(chǎn)品的集成。我們計(jì)劃為Cache Reserve用戶提供更多的分析和指標(biāo),讓他們能夠清楚知道Cache Reserve中的內(nèi)部活動以及節(jié)省了多少出口費(fèi)用。我們還計(jì)劃與R2構(gòu)建更復(fù)雜的集成,這樣,如果客戶想要開始管理其存儲,他們可以輕松完成過渡。最后,我們將努力為客戶提供更多選項(xiàng),以精準(zhǔn)控制哪些內(nèi)容有資格存入Cache Reserve中。對于客戶在Cloudflare上控制和自定義其緩存的旅途而言,這些功能僅僅只是開始。
迄今為止我們收到了哪些反饋?
作為Cloudflare的長期客戶,我們非常想要部署Cache Reserve來節(jié)省成本,并為最終用戶提升性能。確保我們的應(yīng)用程序始終為我們的全球合作伙伴和配送騎手提供優(yōu)質(zhì)性能是Delivery Hero的首要關(guān)注點(diǎn)。使用Cache Reserve,我們的緩存命中率提升了5%,讓我們能夠相應(yīng)縮減基礎(chǔ)結(jié)構(gòu)的規(guī)模,簡化運(yùn)營全球網(wǎng)站所需的設(shè)施,同時(shí)節(jié)省額外支出。
Wai Hang Tang,Delivery Hero工程部總監(jiān)
Anthology使用Cloudflare的全球緩存為我們在學(xué)校和大學(xué)的最終用戶大幅提升了內(nèi)容性能。通過按下單個(gè)按鈕來啟用Cache Reserve,我們能夠?yàn)閹熒鷤儙沓錾捏w驗(yàn),并將我們的日常出口流量減少三分之二。
Paul Pearcy,Anthology資深主任工程師
在Enjoei,我們一直想方設(shè)法幫助我們的最終用戶網(wǎng)站更快速、更高效地運(yùn)行。通過使用Cloudflare Cache Reserve,我們能夠?qū)⒕彺婷新蚀蠓岣?0%以上,從而相應(yīng)減少了我們的源站出口費(fèi)用。Cache Reserve還提升了我們在南美洲的許多商家網(wǎng)站的性能,改善了他們在整個(gè)互聯(lián)網(wǎng)(Google、Criteo、Facebook、Tiktok)上的SEO和可發(fā)現(xiàn)性,而且設(shè)置所需時(shí)間極短。
Elomar Correia,DevOps SRE負(fù)責(zé)人|Enjoei企業(yè)解決方案架構(gòu)師
在現(xiàn)場活動行業(yè),我們可緩存內(nèi)容的規(guī)模和需求可能變化極大,導(dǎo)致出口費(fèi)用不可預(yù)測的波動。此外,使數(shù)據(jù)盡可能靠近用戶,對于使用我們產(chǎn)品的高流量和低帶寬場景(例如集會和音樂節(jié))中的客戶體驗(yàn)至關(guān)重要。Cache Reserve可幫助我們緩解這兩個(gè)問題,同時(shí)盡量減少對我們工程團(tuán)隊(duì)的影響,為我們帶來比現(xiàn)有解決方案更加可預(yù)測的費(fèi)用和更低的延遲。
Jarrett Hawrylak,Patron Technology工程部|企業(yè)票據(jù)部副總裁
如何立即開始使用?
今天,Cache Reserve已進(jìn)入公開測試階段,這意味著想要使用它的所有人都可以對其進(jìn)行訪問。
要使用Cache Reserve,請執(zhí)行以下操作:
·前往儀表板中的Caching板塊。
·導(dǎo)航至Cache Reserve頁面,按下“啟用數(shù)據(jù)同步”按鈕(或“購買”按鈕)。
Enterprise客戶可以與其Cloudflare客戶團(tuán)隊(duì)合作以存取Cache Reserve。
客戶可以查看關(guān)于緩存了多少數(shù)據(jù)以及儀表板的Cache Reserve板塊中顯示的操作數(shù)的基準(zhǔn)指標(biāo),確保Cache Reserve運(yùn)轉(zhuǎn)正常??梢允褂肔ogpush v2并使用字段“CacheReserveUsed”查找HTTP請求,查看Cache Reserve為其提供響應(yīng)的具體請求。
我們將繼續(xù)努力,快速分類您向我們提供的反饋,并對產(chǎn)品進(jìn)行改進(jìn),以幫助確保Cache Reserve易于使用且好處多多,并使其成為您緩存內(nèi)容以減少出口費(fèi)用的首選方案。
我們也很期待聽到您的試用反饋
能讓更多的人使用Cache Reserve,我們感到非常興奮。我們將持續(xù)投入,對Cache Reserve進(jìn)行更多令人興奮的開發(fā),為您提供構(gòu)建完美緩存所需的全部工具。