StorageManager: estimate() 方法

Baseline 2023
新推出

自 2023 年 9 月起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在较旧的设备或浏览器上使用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

StorageManager 接口的 estimate() 方法用于向存储管理器查询当前 源 (origin) 占用的存储空间(usage)以及可用空间(quota)。

此方法是异步操作的,因此它返回一个 Promise,该 Promise 在信息可用时解析。Promise 的成功处理函数会接收一个包含使用量和配额数据的对象。

语法

js
estimate()

参数

无。

返回值

一个 Promise,解析为一个具有以下属性的对象

quota

一个以字节为单位的数值,提供了用户设备或计算机为站点源或 Web 应用提供的总可用存储空间的保守估算值。虽然有可能有比此数量更多的可用空间,但不能完全依赖于此。

usage

一个以字节为单位的数值,估算了站点或 Web 应用在可用空间(由 quota 指示)中当前使用的存储空间量。单位是字节。

usageDetails 非标准

一个对象,包含按存储系统细分的 usage。所有包含的属性的 usage 都将大于 0,任何 usage 为 0 的存储系统将被排除在此对象之外。

注意: 返回的值并不精确:由于压缩、去重以及出于安全原因进行的混淆处理,它们会不精确。

您可能会发现 quota 因源而异。这种差异基于以下因素:

  • 用户访问频率
  • 公开站点流行度数据
  • 用户参与信号,例如书签、添加到主屏幕或接受推送通知

异常

TypeError

如果获取本地存储空间失败,则抛出此异常。例如,如果当前来源是不透明来源,或者用户已禁用存储。

示例

在此示例中,我们获取使用量估算值,并将当前使用的存储容量百分比呈现给用户。

HTML

html
<label>
  You're currently using about <output id="percent"> </output>% of your
  estimated storage quota (<output id="quota"></output>).
</label>

JavaScript

js
navigator.storage.estimate().then((estimate) => {
  document.getElementById("percent").value = (
    (estimate.usage / estimate.quota) *
    100
  ).toFixed(2);
  document.getElementById("quota").value =
    `${(estimate.quota / 1024 / 1024).toFixed(2)}MB`;
});

结果

规范

规范
Storage
# dom-storagemanager-estimate

浏览器兼容性

另见