CacheStorage.keys()

Experimental: 这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

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 方法来删除该缓存。

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

亦可参考