發布日期: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 共用一次,有助於提升效能和永續性。
使用 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 是早期提案,許多專案已提供實驗性支援,通常位於選擇加入標記後方,並分層為漸進增強:
- Emscripten 會分享產生的 Wasm 輸出內容。
- Flutter 會共用 Skia Wasm 執行階段。
- Transformers.js 會共用模型權重和依附的 Wasm 執行階段。
- WebLLM 會共用模型和執行階段。
- wllama 分享 AI 模型。
- Nuxt.js 會從跨源儲存空間載入共用依附元件,並維護 Vite COS 外掛程式。
- Prompt API Polyfill 會在 WebLLM 和 Transformers.js 後端之間共用 AI 模型。
- Prebid.js 具有 COS 支援的 CDN 發布標頭出價程式庫。
標準化
跨源儲存空間是 WICG 的早期提案。您可以參閱早期的 W3C TAG 設計審查。
- 主機整合功能會向各自的標準機構提出申請:
crossoriginstorage屬性和crossOriginStorage匯入屬性與 WHATWG HTML 標準- 與 CSS 工作小組
cross-origin-storage() crossOriginStorage要求選項與 Fetch Standard
- 跨瀏覽器網頁平台測試 (進行中)
- 我們已向 Mozilla 和 WebKit 徵詢標準立場。
歡迎對 API 和提案提供意見。您可以在跨源儲存庫中回報問題、表示支持或提出提取要求。
資源
- 請參閱 Cross-Origin Storage API 說明和規格草案。
- 如要追蹤 Chrome 的 COS 實作進度,請為跨源儲存空間總體錯誤及其依附元件加上星號。
- 請參閱公開雜湊清單說明。
- 填寫 COS 安全性與隱私權問卷。
- 查看原型設計意圖和 Chrome 平台狀態項目。
此外,您也可以查看以下工具和示範:
其他背景資訊
- 透過快取分區提升安全性和隱私權
- 在 Transformers.js 中試用提議的 Cross-Origin Storage API
- HTTP 快取分區:同一張圖片下載兩次 (作者:Joan León)
- 跨源 Storage API:停止重複下載 (作者:Dennis Morello)
- 我希望瀏覽器只提供 jQuery。跨源儲存救援記 (作者:Ahmad Alfy)
談話和 Podcast
- ShopTalk Show 732:Thomas Steiner 談論全新跨來源儲存空間 API (Podcast)
- Working Draft 723: Cross-Origin Storage API (德文 Podcast)
- WeAreDevelopers:什麼是跨源儲存空間 (Podcast)
- 跨源儲存:網頁共用快取,JSNation US 2026