如何处理不受 Service Worker 控制的 URL

How to handle URLs that aren't controlled by a service worker

我对 service worker 的策略是,如果 url 匹配某种特定格式,那么只有 service worker 应该拦截它,否则浏览器应该像往常一样处理它,

对于我使用 evt.respondWith() 的所有情况,拦截它并提供自定义响应,但是如果 url 不匹配任何格式 [=16] 我该怎么办=]

我有几个选项,它们都有效,但我不确定哪个在逻辑上是正确的

1) 什么都不做,意味着我有条件检查 fetch 方法中每个定义的格式,但如果它们不匹配,我什么都不做,我没有任何 "else" condition.In 这种情况浏览器正在正常获取页面,但我不确定它是否正确,实际发生了什么,cookie 是否通过了?

2) 在 else 方法中我有 fetch(event.request, { credentials: 'include' }); 这也有效,我不确定我是否需要在此处包含凭据条款,根据我的理解,不是服务人员而是浏览器正在处理此处的请求,因此它将自动包含 cookie。如果我在这里错了,请纠正我。

3)event.respondWith(fetch(event.request, { credentials: 'include' }));

这也有效,我想因为我正在使用 event.respondWith,所以我需要在此处明确包含凭据(同样我不确定)。但我的疑问是我是否需要使用 event.respondWith 这里。我所知道的 event.respondWith 是,只有当我们想为获取事件提供自定义响应时才使用它。因为我们希望按原样处理这些请求,我们是否需要使用 event.respondWith 这里 ?

我所有的困惑都来自于我对 event.respondWith() 缺乏了解,有人可以解释一下,我应该在什么时候使用 它?

event.respondWith allows you to respond to a network request with a response that you create (either by using fetch, or the Cache API, or even created manually with the Response constructor).

如果您不在 fetch 事件处理程序中调用它,浏览器将处理该请求。

如果你用 fetch(event.request) 调用它,它基本上与让浏览器处理它相同(因为 fetch 将执行完全相同的请求,如果你没有'我叫 event.respondWith).

请注意,event.respondWith 将使用您传递给它的值或您传递给它的 promise 解析为的值进行响应。

event.respondWith(new Response('Some body.'));

event.respondWith(new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve(new Response('Some body.'));
  }, 1000);
}));