CacheStorage: keys() 方法

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有浏览器中可用。

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

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

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

您可以通过窗口中的 Window.caches 属性或在 worker 中的 WorkerGlobalScope.caches 属性来访问 CacheStorage

语法

js
keys()

参数

无。

返回值

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

示例

在此代码片段中,我们等待一个 activate 事件,然后运行一个 waitUntil() 块,该块在激活新的 Service Worker 之前清理所有旧的、未使用的缓存。在这里,我们有一个包含我们想要保留的缓存名称的允许列表(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);
          }
          return undefined;
        }),
      ),
    ),
  );
});

规范

规范
Service Workers
# cache-storage-keys

浏览器兼容性

另见