CacheStorage.keys()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

备注: 此特性在 Web Worker 中可用。

CacheStorage 接口的 keys() 方法返回一个 Promise对象,它会兑现一个包含 CacheStorage 对象按创建顺序跟踪的所有具名 Cache 对象对应的字符串的数组。使用此方法会迭代所有 Cache 对象。

你可以通过窗口的 Window.caches 属性或 worker 的 WorkerGlobalScope.caches 属性访问 CacheStorage

语法

js
keys()

参数

无。

返回值

一个会兑现为 CacheStorage 对象中所有 Cache 对象的名称的数组的 Promise

示例

在此代码片段中,我们监听activate 事件,然后运行一个 waitUntil() 方法,该方法在新的 service worker 被激活之前清除老的、无用的 cache。这里我们设置一个包含缓存名称的白名单。通过使用 keys() 方法来返回 CacheStorage 对象中的 keys 集合,然后检查缓存 key 是否在白名单中,如果不存在,则使用 CacheStorage.delete 方法来删除该缓存。

js
this.addEventListener('activate', function(event) {
  var cacheWhitelist = ['v2'];

  event.waitUntil(
    caches.keys().then(function(keyList) {
      return Promise.all(keyList.map(function(key) {
        if (cacheWhitelist.indexOf(key) === -1) {
          return caches.delete(key);
        }
      });
    })
  );
});

规范

Specification
Service Workers
# cache-storage-keys

浏览器兼容性

BCD tables only load in the browser

参见