CacheStorage: keys() 方法

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

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

keys() 方法是 CacheStorage 接口的方法,它返回一个 Promise,该 Promise 将解析为一个数组,该数组包含与由 CacheStorage 对象跟踪的所有命名 Cache 对象相对应的字符串,其顺序为它们创建的顺序。使用此方法可以遍历所有 Cache 对象的列表。

您可以通过窗口中的 Window.caches 属性或工作线程中的 WorkerGlobalScope.caches 属性访问 CacheStorage

语法

js
keys()

参数

无。

返回值

一个 Promise,它解析为一个包含 CacheStorage 对象中的 Cache 名称的数组。

示例

在此代码片段中,我们等待一个activate 事件,然后运行一个waitUntil() 块,该块在激活新的服务工作线程之前清除所有旧的、未使用的缓存。这里我们有一个允许列表,其中包含我们想要保留的缓存的名称 (cacheAllowlist)。我们使用 keys() 返回 CacheStorage 对象中的缓存的键,然后检查每个键是否在允许列表中。如果没有,我们使用CacheStorage.delete() 删除它。

js
this.addEventListener("activate", (event) => {
  const cacheAllowlist = ["v2"];

  event.waitUntil(
    caches.keys().then((keyList) =>
      Promise.all(
        keyList.map((key) => {
          if (!cacheAllowlist.includes(key)) {
            return caches.delete(key);
          }
        }),
      ),
    ),
  );
});

规范

规范
Service Workers
# cache-storage-keys

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅