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

瀏覽器相容性

另見