跳到正文
Vercel Blog(vercel.com)· Yvonne Zhou·· 18 小時前精選品質評分81

Vercel 推出 Runtime Cache,統一資料快取 API 以提升跨框架效能

Simplifying runtime caching on Vercel

重點導讀

Vercel 推出 Runtime Cache,統一資料快取 API,讓開發者可跨 Next.js、SvelteKit、Nuxt 等框架重用資料,提升讀取速度與儲存容量。

推薦理由

Vercel 的 Runtime Cache 讓開發者可統一使用單一 API 進行資料快取,並提供更大儲存與更快讀取,提升跨框架與 API 的效能。

正文 · 中文翻譯

今天,我們將 Data Cache 整合進 Runtime Cache,為開發者提供一個跨框架與 API 的資料快取產品。若您使用 Next.js fetch 快取或 unstable_cache,則不需要更改程式碼。Pro 與 Enterprise 專案將獲得更大的儲存配額。

Runtime Cache 讓您的程式碼能在多個請求之間重複使用已抓取或計算的資料,而不需要執行獨立的快取服務。過去一年,我們提升了在流量高峰時的讀取效能、擴充了儲存預算,並使快取使用更易於調查。

我們為何打造 Runtime Cache

Data Cache 最初作為 Vercel 為 Next.js App Router 推出的資料快取服務,供 fetch 快取與 unstable_cache 使用。與 CDN 快取 不同,CDN 快取儲存完整的 HTTP 回應,Data Cache 則儲存您的應用程式用於產生這些回應的資料。例如,產品頁面可以重複使用已快取的目錄資料,同時為每位訪客渲染個人化回應。

我們希望開發者能在不依賴 Next.js 的情況下使用該服務。去年,我們 推出 Runtime Cache,並提供直接 API:getCache 來自 @vercel/functions。應用程式可利用它於 Routing Middleware 進行功能旗標查詢、在建置過程中快取 CMS 內容,以及在 SvelteKit 與 Nuxt 應用程式中進行資料快取。

框架也能透過自己的 API 將此服務公開。在 Vercel 上,Next.js 本身使用 Runtime Cache API 進行 'use cache: remote',以快取函式與元件輸出。

Runtime Cache 的運作方式

Runtime Cache 的基礎設施是一個由多個團隊共用的分散式快取服務。Go API 處理請求,並由位於每個 Vercel 區域的 Redis 叢集支援。每小時,該服務處理超過 4.4 億次讀取,並搬移超過 18 TB 的資料。

每個區域都有自己的快取。一次快取命中只需往該區域的快取服務進行一次往返。Vercel 使用短暫有效的憑證處理身份驗證,您不需要管理 API 金鑰。

若發生快取未命中,您的應用程式或框架會抓取或計算該值,並寫入該區域的快取。服務不會檢查其他區域是否已有快取副本。

每個快取專案都會儲存其標籤與寫入時間。當服務讀取一個專案時,會在同一區域的獨立標籤儲存庫中檢查這些標籤的失效時間戳。若任何標籤在專案寫入後被失效,該專案即為陳舊。

例如,應用程式可以將所有已快取的產品資料標記為 catalog。當目錄變更時,失效該標籤會寫入單一時間戳,即使有百萬個專案共用該標籤。服務不需要逐一尋找並刪除這些專案。

失效立即更新接收請求區域的標籤儲存庫。Vercel 的共享標籤基礎設施,同樣被 CDN 使用,會透過全球推送管線傳播時間戳,通常在數百毫秒內抵達其他區域。

您的應用程式或框架決定要快取哪些資料並處理未命中。Runtime Cache 負責區域儲存、身份驗證,以及跨區域分發標籤失效。

我們已推出的功能

流量高峰時的更快讀取

檢查專案是否仍新鮮會為每一次快取命中增加依賴。在流量高峰期間,標籤儲存庫中慢速的分片可能會延遲讀取,即使快取值已可用。

我們新增了斷路器,讓讀取操作能夠臨時使用記憶體中快取的標籤時間戳來檢查新鮮度,從而不必等待慢速分片回應。在此回退期間,讀取操作可暫時將最近失效的資料視為新鮮。

我們在八月於每個區域啟用了斷路器。在我們最大區域最劇烈的流量高峰期間,p99 快取服務讀取延遲下降到相當流量下先前水平的約五分之一。此失效模式的值班警報已停止。

更多儲存空間與更少的逐出

我們在六月提升了 Pro 專案的 Runtime Cache 儲存預算,在十月提升了 Enterprise 專案,讓應用程式擁有更多空間存放重複使用的資料。這降低了為新資料騰出空間而逐出快取專案的需求。在經常逐出的 Enterprise 專案中,快取未命中率在一天內大約減半。

更清晰的快取行為可見度

我們已在 Observability 的 Runtime Cache 介面加入部署標記、重新驗證原因以及寫入利用率。這些功能可協助您比較快取行為與版本發布的變化,瞭解為何專案被重新整理,並辨識雖寫入快取但很少被讀取的資料。

將 Data Cache 整合進 Runtime Cache

我們正透過將快取整合至 Runtime Cache 來簡化 Vercel 上的快取。迄今為止,Next.js fetch 快取和 unstable_cache 使用 Data Cache,而 getCache 與 'use cache: remote' 使用 Runtime Cache。此遷移將四個 API 皆納入 Runtime Cache,讓您與程式編寫代理商只需使用一套儲存預算與使用工具。

若您使用 fetch 快取或 unstable_cache,程式碼不會改變。在 Pro 方案中,每個專案與環境都會有自己的儲存分配,容量為 Data Cache 以前團隊池的 8 倍。Enterprise 專案則得到 10 倍於先前 Data Cache 儲存空間。

先前未計費的 Data Cache 讀寫將遵循 Runtime Cache 定價。新團隊會自動使用 Runtime Cache,現有團隊則會提前收到遷移與計費細節。

請參閱 更新日誌 瞭解推出、定價與早期選擇詳細資訊。在遷移前,請審查您的快取使用情況並依照 最佳化指南 減少不必要的讀寫。

閱讀更多

來源: Vercel Blog (vercel.com)
開啟原文