SevenTnewS

网页性能

Chrome新API可让AI模型跨网站共享缓存,节省177MB流量

谷歌提议的跨域存储API旨在通过SHA-256哈希而非URL来识别资源,消除AI模型和Wasm运行时的重复下载。Transformers.js、WebLLM和wllama已在试验该功能,仅Whisper模型每次重复加载就能节省超过177MB。

Emmanuel Fabrice Omgbwa Yasse

2026-07-09 · 阅读需 3 分钟

Chrome新API可让AI模型跨网站共享缓存,节省177MB流量

问题是这样的:你构建了一个基于Transformers.js的AI网页应用。首次访问时,浏览器下载了模型权重和WebAssembly运行时文件,并在本地缓存。然后你加载了另一个不同来源的应用,它使用了完全相同的模型,比如流行的语音识别模型Whisper。浏览器再次下载并缓存了同样的数兆字节数据。对于大型模型,这种重复会浪费每位用户数百兆字节的带宽和磁盘空间。这不仅仅是烦人,更是一种真正的资源消耗。

谷歌Chrome团队正在着手解决这个问题。提议的跨域存储(COS)API是一项早期规范,引入了专门的navigator.crossOriginStorage接口。不同于当前基于URL和来源对缓存资源进行分区(出于安全原因)的模型,COS通过文件的SHA-256加密哈希来识别文件。这意味着无论资源是首次由https://site-a.com还是https://site-b.com获取,只要字节相同,浏览器就可以从单一共享存储中提供它们。

COS如何工作

该API有意模仿了网页开发者已经熟悉的来源私有文件系统(OPFS)。要检索文件,应用会调用navigator.crossOriginStorage.requestFileHandle(hash),其中hash是一个包含算法(目前为SHA-256)和十六进制值的对象。如果文件已存储,该方法会返回一个用于读取的FileSystemFileHandle。如果没有,应用可以回退到网络获取,然后使用{ create: true, origins: '*' }存储结果,使其全局可用。

对可见性的控制是精细的:开发者可以将origins设置为'*'以公开资源,对于专有资产则设置一个允许的来源显式列表,或者完全省略以实现仅同站共享。一个谨慎的设计决策防止了可见性降级。一旦文件被全局存储,后续对其来源进行限制的尝试会被静默忽略,从而阻止潜在的滥用。

默认完整性

每次对COS的写入都会根据声明的哈希自动验证。如果字节不匹配,写入就会失败。这为消费者提供了隐式的完整性保证,而目前基于HTTP的下载通常不提供这种保证。对于从内容分发网络下载的AI模型,这意味着开发者和用户可以相信他们得到的正是预期的权重。

隐私保护

跨域存储不可避免地引发了跨站追踪的担忧。COS通过两种机制解决这个问题。首先,显式的origins字段鼓励开发者将可见性限制为仅需要访问的来源。其次,即使对于全局声明的文件,如果该文件在太少的独立来源上被遇到过,浏览器可能会抑制对其存在性的确认,返回“未命中”而不是确认文件存在。Chrome团队成员指出,这一缓解措施仍在完善中。建议开发者始终通过回退到网络来处理未命中情况。

Transformers.js试点COS

Transformers.js库允许网页开发者通过ONNX Runtime直接在浏览器中运行Transformer模型,它已经引入了实验性的COS支持。只需一行代码即可启用:

import { env } from "https://cdn.jsdelivr.net/npm/@huggingface/transformers@4.2.0";
env.experimental_useCrossOriginStorage = true;

启用后,该库会解析每个Xet追踪的模型文件的SHA-256哈希,并在下载前检查COS。在测试中,这消除了像Xenova/whisper-tiny.en这样的模型以及共享Wasm运行时的重复下载,仅Whisper ASR模型就节省了超过177MB。同样的改进也适用于WebLLM和wllama,它们也已集成了COS支持。

立即尝试

目前还没有浏览器原生实现COS API,但开发者可以为Chrome安装跨域存储扩展,该扩展会注入一个navigator.crossOriginStorage polyfill。激活扩展后,访问两个使用相同模型的不同演示应用,会看到第二个应用从COS即时加载,而无需重新下载权重。

Chrome团队正在通过跨域存储仓库积极征求对该提案的反馈。在浏览器本身中实现该功能,将为所有网络用户带来这些性能和存储上的节省,而无需安装扩展。