AI News HubLIVE
站內改寫1 分鐘閱讀

在Transformers.js中試驗提出的跨域存儲API

本文介紹了跨域存儲(COS)API提案,該API允許Web應用跨域共享大型文件(如AI模型和Wasm運行時),通過加密哈希而非URL標識文件,從而避免重複下載和存儲。文章以Transformers.js為例,展示了當前瀏覽器緩存隔離導致的問題,以及COS如何通過哈希標識、可升級的訪問控制和安全完整性檢查來解決這些問題。

在Web開發中,Transformers.js庫讓開發者能夠通過任務特定的管道輕鬆在Web應用中使用Transformer模型。例如,創建自動語音識別(ASR)管道只需幾行代碼。然而,當多個不同來源的Web應用使用相同的AI模型或Wasm運行時文件時,瀏覽器會因緩存隔離而重複下載和存儲這些資源,造成帶寬和存儲浪費。

Chrome等瀏覽器通過網絡隔離鍵(由頂級站點和當前框架站點組成)來隔離緩存,即使資源URL完全相同也不會命中緩存。這意味着,如果兩個不同來源的應用都使用同一份Wasm運行時文件,每個應用都必須獨立下載和緩存。例如,一個簡單的ASR模型(Xenova/whisper-tiny.en)在跨域時會導致177 MB的重複下載。更糟糕的是,即使是不同的AI模型,如果它們共享相同的Wasm運行時(如4.7 MB的ort-wasm-simd-threaded.asyncify.wasm),也會被重複下載和緩存。

為此,有人提出了跨域存儲(COS)API。該API引入navigator.crossOriginStorage接口,允許應用通過加密哈希而非URL標識文件,實現跨域共享。當應用需要資源時,先嚐試通過哈希從COS中獲取;若失敗,則從網絡下載並寫入COS供後續使用。由於哈希相同,不同來源的應用可以共享同一份緩存。

COS還提供了精細的訪問控制:origins: '*'表示全局共享;指定具體源列表則限制訪問;省略origins則僅同站點可用。訪問權限只能升級(從限制到開放),不能降級,以防止惡意篡改。另外,寫入文件時瀏覽器會自動驗證哈希是否匹配,確保數據的完整性。

儘管COS目前仍處於早期提案階段,尚未被任何瀏覽器原生實現,但開發者可以通過安裝官方擴展來注入polyfill進行實驗。該API的潛力在於解決AI模型和Wasm運行時等大型資源的跨域重複緩存問題,提高Web應用的性能和存儲效率。