CacheStorage:delete() 方法

Baseline 已广泛支持

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

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

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

CacheStorage 接口的 delete() 方法会查找与 cacheName 匹配的 Cache 对象,如果找到,则会删除该 Cache 对象并返回一个解析为 truePromise。如果未找到 Cache 对象,则解析为 false

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

语法

js
delete(cacheName)

参数

cacheName

要删除的缓存的名称。

返回值

一个 Promise,如果找到并删除了 Cache 对象,则解析为 true,否则解析为 false

示例

在此代码片段中,我们等待一个 activate 事件,然后运行一个 waitUntil() 块,在新的 service worker 激活之前清理任何旧的、未使用的缓存。在这里,我们有一个想要保留的缓存名称数组 (cachesToKeep)。我们使用 CacheStorage.keys 返回 CacheStorage 对象中的缓存键,然后检查每个键是否在数组中。如果不在,我们使用 delete() 删除它。

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

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

规范

规范
Service Workers
# cache-storage-delete

浏览器兼容性

另见