【GOOGLE】跨源存储提案在Transformers.js中的应用
本文介绍了浏览器中使用Transformers.js加载AI模型时遇到的缓存重复与存储隔离问题,并演示了谷歌提出的Cross-Origin Storage(COS)API如何通过以文件哈希为标识实现跨源共享缓存,从而减少重复下载与磁盘占用。文章还说明了当前COS为早期提案、可通过扩展进行试验,并给出在Transformers.js场景下的具体收益与操作建议。
本文介绍了浏览器中使用Transformers.js加载AI模型时遇到的缓存重复与存储隔离问题,并演示了谷歌提出的Cross-Origin Storage(COS)API如何通过以文件哈希为标识实现跨源共享缓存,从而减少重复下载与磁盘占用。文章还说明了当前COS为早期提案、可通过扩展进行试验,并给出在Transformers.js场景下的具体收益与操作建议。
背景与问题
– Transformers.js 在浏览器端通过 pipeline() 下载模型与 Wasm 运行时文件以便本地推理。
– 不同站点(不同 origin)即便请求完全相同的资源,浏览器仍会基于网络隔离键(Network Isolation Key)把缓存隔离,导致重复下载与重复本地存储(示例中多达 177 MB 的重复)。
– 即使模型不同,共享的 Wasm 运行时(如 ort-wasm-*.wasm)也会被重复缓存,进一步浪费带宽和磁盘空间。
Chrome 的缓存隔离机制
– Chrome 使用 Network Isolation Key(由顶级站点和当前框架站点组成)与资源 URL 共同作为缓存键,防止基于耗时的定时攻击泄露隐私,但也导致跨源缓存不可复用。
Cross-Origin Storage(COS)提案简介
– COS 提供 navigator.crossOriginStorage 接口,按加密哈希标识文件而不是按 URL 或 origin。
– 同一哈希的文件在不同 origin 之间可被识别为相同资源,从而实现跨源缓存复用与去重。
– 该提案仍处于早期阶段,尚未被主流浏览器原生支持,但可通过 Chrome 扩展注入 polyfill 进行实验。
在 Transformers.js 场景下的好处
– 相同模型或相同 Wasm 文件只需下载并存储一次,避免重复网络请求与本地存储浪费。
– 改善用户体验(首次加载后其他站点几乎即时可用)并降低 CDN/用户端带宽成本。
实践与建议
– 开发者可以通过安装 Cross-Origin Storage 扩展或 polyfill 在本地/测试环境试验 COS 工作流。
– 在可控环境下验证:使用相同模型与 Wasm 的不同 origin 页面,观察网络请求与缓存行为变化。
– 关注该提案的安全与隐私评估、浏览器实现进度以及相关规范更新。
结论
– COS 为浏览器端模型资源与 Wasm 运行时的跨源缓存复用提供了技术路径,能有效减少重复下载与磁盘占用,但仍需要规范成熟与浏览器原生支持才能广泛应用。
COS用哈希去重资源很实用,但还需规范与浏览器支持才能在生产环境普及。
不错过任何一条 AI 大事
订阅 AIFlux 早报,每天 3 分钟看懂产业动态。

