跳转到内容

Storage Buckets 支持情况

发布于 更新于

Storage Buckets API 允许页面通过 navigator.storageBuckets(一个 StorageBucketManager)创建多个独立命名的存储桶,每个存储桶拥有各自的 IndexedDB 数据库、Cache Storage 和驱逐策略——而不是所有 API 共用一个源级别的存储池。

  • 图例
  • 支持
  • 部分支持
  • 需开启标志
  • 不支持
  • 未知
浏览器 / 平台支持版本置信度来源备注
Chrome (Desktop)支持122低来源12
Chrome (Android)支持122低来源3
Edge (Desktop)支持122低来源4
Firefox (Desktop)不支持—低来源5
Safari (macOS)不支持—低来源6
  1. 依据 MDN browser-compat-data,StorageBucketManager(navigator.storageBuckets)在 Chrome 122 中发布。
  2. 该条目尚无 MDN 说明页;依据 caniuse 上该特性的各浏览器支持表核对。
  3. 依据 MDN browser-compat-data,镜像桌面版 Chrome 的支持情况。
  4. 依据 MDN browser-compat-data,镜像 Chromium 的支持情况。
  5. 未实现;依据 MDN browser-compat-data,作为未关闭的 Firefox bug 跟踪中。
  6. 依据 MDN browser-compat-data,未实现。

源数据: /compatibility/storage-buckets.json · 全球使用占比: 69 % (StatCounter 2026-05)

来源: 规范 · 最近核验 2026-09-04 · 置信度: 低 (由来源计算)

打开(或创建)一个命名存储桶,然后像使用源级别版本一样使用它自己的 indexedDB 和 caches:

const bucket = await navigator.storageBuckets.open('media-cache', {
persisted: true,
});
const cache = await bucket.caches.open('videos');
await cache.put('/clip.mp4', await fetch('/clip.mp4'));

在调用前先特性检测 navigator 上的 storageBuckets,若不可用则回退到源的默认 indexedDB/caches(单一共享存储池):

async function openMediaCache() {
if (!('storageBuckets' in navigator)) {
// 不支持的浏览器:回退到默认的共享存储池。
return caches.open('videos');
}
const bucket = await navigator.storageBuckets.open('media-cache');
return bucket.caches.open('videos');
}
  • Firefox 与 Safari 均未实现 navigator.storageBuckets——根据上表,该能力仅限 Chromium,因此请始终保留默认存储回退。
  • open() 接受一个 persisted 选项(默认为 false);根据规范的 StorageBucketOptions 字典,未设置 persisted: true 创建的存储桶仍可能在存储 压力下被独立于其他存储桶清除。
  • navigator.storageBuckets.delete() 会将该存储桶从存储桶映射表中移除并标记为已 删除;根据规范,其自身 IndexedDB / Cache / 文件系统数据的清理留给各存储端点 自行处理,因此不要假设 delete() 会同步释放这些空间。

← 返回兼容性浏览器。