Cache: matchAll() 方法

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有瀏覽器中可用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

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

Cache 介面的 matchAll() 方法返回一個 Promise,該 Promise 解析為 Cache 物件中所有匹配響應的陣列。

語法

js
matchAll()
matchAll(request)
matchAll(request, options)

引數

request 可選

您試圖在 Cache 中查詢響應的 Request。這可以是一個 Request 物件或一個 URL。如果省略此引數,您將獲得此快取中所有響應的副本。

options 可選

一個選項物件,允許您為執行的匹配設定特定的控制選項。可用的選項是

ignoreSearch

一個布林值,指定匹配過程是否應忽略 URL 中的查詢字串。如果設定為 true,則在執行匹配時會忽略 http://foo.com/?value=bar 中的 ?value=bar 部分。預設為 false

ignoreMethod

一個布林值,如果設定為 true,則阻止匹配操作驗證 Requesthttp 方法(通常只允許 GETHEAD)。預設為 false

ignoreVary

一個布林值,當設定為 true 時,會告訴匹配操作不要執行 VARY 標頭匹配 — 也就是說,如果 URL 匹配,無論 Response 物件是否具有 VARY 標頭,您都會獲得匹配。預設為 false

返回值

一個 Promise,該 Promise 解析為 Cache 物件中所有匹配響應的陣列。

注意: Cache.match()Cache.matchAll() 基本相同,只是它解析為第一個匹配的響應,而不是所有匹配的響應(即 response[0])。

示例

以下示例檢索 v1 快取中與 URL / 匹配的所有響應,甚至包括潛在的查詢引數。透過使用 { ignoreSearch: true },使用 matchAll 將檢索 / 以及 /?value=bar

然後,它會記錄匹配響應的數量。

js
caches
  .open("v1")
  .then((cache) => cache.matchAll("/", { ignoreSearch: true }))
  .then((responses) => {
    console.log(`Found ${responses.length} matching responses`);
  });

規範

規範
Service Workers
# cache-matchall

瀏覽器相容性

另見