Cross-Origin Storage API 簡介

發布日期:2026 年 11 月 10 日

現代網頁應用程式通常仰賴大型素材資源,例如 JavaScript 架構、遊戲引擎和 AI 模型。雖然網站使用相同的素材資源,但每個網站都必須下載並儲存各自的副本。

根據提議的跨源儲存 API (簡稱 COS),用戶端會依據雜湊指定要尋找的內容,並從任何網址擷取內容,以便在指定網站 (或所有網站) 之間共用。這表示無論是否提供資產,都可以在不同網站之間共用確切、已知的資源。這項提案雖然有助於提升安全性,但也帶來安全挑戰。

用途

我們已詳細說明快取模型的重要性,以及如何使用 Cache Storage API 快取任何資產。跨源 Storage API 更進一步,在多個相關 (或其他) 網站需要存取相同資源時,可能會有幫助:

  • AI 模型:Gemma 或 Llama 變體等模型的大小約為 1 GB 到數十 GB。透過 COS 儲存及擷取單一副本,可避免大量重複下載。這也是我們提出這項提案的主要原因。
  • Wasm 模組:Flutter 等架構會傳送 Wasm 檔案,這些檔案每天會從數千個不同的來源要求數百萬次,且位元組一律相同。
  • 熱門 JavaScript 程式庫和架構:將供應商程式碼分開並完整打包 (例如完整、未經搖樹優化的 React 程式庫),可讓多個應用程式透過 COS 共用一個快取副本。
  • 遊戲引擎:以 Godot 或 Unity 等引擎建構的瀏覽器遊戲,可透過 COS 共用引擎執行階段,並只透過網路擷取遊戲專屬素材資源。如果遊戲入口網站提供許多來自不同來源或 iframe 的休閒遊戲,最適合採用這項功能。
  • 大型網頁字型:圖示字型、表情符號字型,以及涵蓋廣泛 Unicode 的字型,會下載到大量網頁中。透過 COS 共用一次,有助於提升效能和永續性。
在開發人員工具中,可以看到 Descent 和 Quake 這兩款不相關的 Three.js 遊戲,透過 COS 共用同一個引擎。
兩個不相關的 Three.js 遊戲:Descent (在背景分頁中) 和 Quake (在前景分頁中),透過 COS 共用一個引擎副本,並在開發人員工具中檢查。這張螢幕截圖來自 Chromium 實驗版本,可能與最終設計不同。

使用 COS 的基本流程

COS API 導入 navigator.crossOriginStorage.getFileHandle() 方法,網頁應用程式可透過該方法,跨來源邊界儲存及擷取檔案,並以密碼編譯雜湊識別。說明文件提供範例,展示使用 API 的基本流程。

立即體驗

目前有兩種方式可以試用 COS:

  • 從 Chrome 線上應用程式商店、Firefox 外掛程式或 Safari App Store 安裝瀏覽器擴充功能,為 API 介面和所有整合項目提供 Polyfill。您可以在任何瀏覽器中測試 API 流程。或從原始碼載入未封裝的擴充功能。
  • Chromium 實驗:Chromium 實驗性實作。請前往 goo.gle/cos-chromium 下載適用於 Apple 晶片或 Linux x86_64 的 macOS 版本,然後開啟 about://flags,搜尋「跨源儲存空間」,將其設為「Enabled」,並在系統提示時重新啟動。這個版本包含開發人員工具整合功能:在「Application」分頁中,找出「跨源儲存空間」。

生態系統興趣

COS 是早期提案,許多專案已提供實驗性支援,通常位於選擇加入標記後方,並分層為漸進增強:

標準化

跨源儲存空間是 WICG 的早期提案。您可以參閱早期的 W3C TAG 設計審查。

歡迎對 API 和提案提供意見。您可以在跨源儲存庫中回報問題、表示支持或提出提取要求。

資源

此外,您也可以查看以下工具和示範:

其他背景資訊

談話和 Podcast