CacheStorage.keys()

实验性: 这是一项实验性技术
在将其用于生产之前,请仔细检查浏览器兼容性表格

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

语法

caches.keys().then(function(keyList) {
  //对 keyList 做操作
});

返回

一个使用 CacheStorage 对象中 Cache 名称数组 resolve 的 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

亦可参考