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

浏览器兼容性

另见