跳到主要内容
AI News HubLIVE
站内改写1 分钟阅读

在Transformers.js中试验提出的跨域存储API

文章摘要

本文介绍了跨域存储(COS)API提案,该API允许Web应用跨域共享大型文件(如AI模型和Wasm运行时),通过加密哈希而非URL标识文件,从而避免重复下载和存储。文章以Transformers.js为例,展示了当前浏览器缓存隔离导致的问题,以及COS如何通过哈希标识、可升级的访问控制和安全完整性检查来解决这些问题。

在Transformers.js中试验提出的跨域存储API
报告错误

纠错通道尚未开通,可先复制下方文章信息留存。

查看更正说明
直接读正文

在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应用的性能和存储效率。

展开要点与分析

文章情报

工程师进阶

要点

  • 当前浏览器缓存按源隔离,导致跨域应用重复下载相同的AI模型和Wasm文件。
  • 跨域存储(COS)API使用加密哈希标识文件,实现跨域共享。
  • COS支持灵活的访问控制,可设置全局共享或限制特定源。
  • 文件写入时自动验证哈希,确保数据完整性。

要点与分析由自动化流程生成,可能有误,请结合原始来源核实。