Cache.match() - Web API 接口参考 编辑

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

Cache 接口的 match() 方法, 返回一个 Promise 解析为(resolve to)与 Cache 对象中的第一个匹配请求相关联的Response 。如果没有找到匹配,Promise 解析为 undefined

语法

cache.match(request,{options}).then(function(response) {
  //操作response
});

返回值

一个 Promise 对象,该对象解析为第一个匹配请求的 Response 对象,如果没有匹配到,则解析到 undefined

Note: Cache.match() 基本上和 Cache.matchAll() 一样, 只不过 Cache.match() 只解析为 response[0] (第一个匹配的响应(response)对象) 而不是 response[] (所有响应对象组成的数组)。

参数

request
Cache对象中查找的Request对象对应的response。这个Request可以是 object 或者是一个URL.
options 可选
一个为 match 操作设置选项的对象。有效的选项如下:
  • ignoreSearch: 一个 Boolean 值用来设置是否忽略url中的query部分。例如, 如果该参数设置为 true ,那么 http://foo.com/?value=bar中的 ?value=bar 部分就会在匹配中被忽略. 该选项默认为 false
  • ignoreMethod: 一个 Boolean 值,如果设置为 true在匹配时就不会验证 Request 对象的http 方法 (通常只允许是 GET 或 HEAD 。) 该参数默认值为 false
  • ignoreVary: 一个 Boolean 值,该值如果为 true 则匹配时不进行 VARY 部分的匹配。例如,如果一个URL匹配,此时无论Response对象是否包含VARY头部,都会认为是成功匹配。该参数默认为 false
  • cacheName: 一个 DOMString ,代表一个具体的要被搜索的缓存。注意该选项被 Cache.match()方法忽略。

例子

这个是个来自 custom offline page 的例子 (live demo)。

下面的例子在请求失败时提供特定的数据。 catch() 在 fetch() 的调用抛出异常时触发。在 catch() 语句中, match()用来返回正确的响应。

在这个例子中,我们决定只缓存通过GET取得的HTML文档. 如果 if() 条件是 false,那么这个fetch处理器就不会处理这个请求。如果还有其他的fetch处理器被注册,它们将有机会调用 event.respondWith() 如果没有fetch处理器调用 event.respondWith() ,该请求就会像没有 service worker 介入一样由浏览器处理。如果 fetch() 返回了有效的HTTP响应,相应码是4xx或5xx,那么catch() 就不会被调用。

self.addEventListener('fetch', function(event) {
  // 我们只想在用GET方法请求HTML文档时调用 event.respondWith()。
  if (event.request.method === 'GET' &&
      event.request.headers.get('accept').indexOf('text/html') !== -1) {
    console.log('Handling fetch event for', event.request.url);
    event.respondWith(
      fetch(event.request).catch(function(e) {
        console.error('Fetch failed; returning offline page instead.', e);
        return caches.open(OFFLINE_CACHE).then(function(cache) {
          return cache.match(OFFLINE_URL);
        });
      })
    );
  }
});

规范

SpecificationStatusComment
Service Workers
Cache
Working DraftInitial definition.

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support40.0 [1]39 (39)[2]未实现24未实现
All options supported54.041
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Basic support未实现未实现39.0 (39)?未实现(Yes)未实现40.0 [1]
All options supported未实现未实现4154.0

参阅

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:137 次

字数:9301

最后编辑:6 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文