Storage Buckets 支持情况
发布于 更新于
Storage Buckets API 允许页面通过 navigator.storageBuckets(一个
StorageBucketManager)创建多个独立命名的存储桶,每个存储桶拥有各自的 IndexedDB
数据库、Cache Storage 和驱逐策略——而不是所有 API 共用一个源级别的存储池。
浏览器与生态支持
Section titled “浏览器与生态支持”- 图例
- 支持
- 部分支持
- 需开启标志
- 不支持
- 未知
| 浏览器 / 平台 | 支持 | 版本 | 置信度 | 来源 | 备注 |
|---|---|---|---|---|---|
| Chrome (Desktop) | 支持 | 122 | 低 | 来源 | 12 |
| Chrome (Android) | 支持 | 122 | 低 | 来源 | 3 |
| Edge (Desktop) | 支持 | 122 | 低 | 来源 | 4 |
| Firefox (Desktop) | 不支持 | — | 低 | 来源 | 5 |
| Safari (macOS) | 不支持 | — | 低 | 来源 | 6 |
- 依据 MDN browser-compat-data,StorageBucketManager(navigator.storageBuckets)在 Chrome 122 中发布。
- 该条目尚无 MDN 说明页;依据 caniuse 上该特性的各浏览器支持表核对。
- 依据 MDN browser-compat-data,镜像桌面版 Chrome 的支持情况。
- 依据 MDN browser-compat-data,镜像 Chromium 的支持情况。
- 未实现;依据 MDN browser-compat-data,作为未关闭的 Firefox bug 跟踪中。
- 依据 MDN browser-compat-data,未实现。
打开(或创建)一个命名存储桶,然后像使用源级别版本一样使用它自己的 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'));如何在运行时检测
Section titled “如何在运行时检测”在调用前先特性检测 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()会同步释放这些空间。
← 返回兼容性浏览器。