Ram*_*ttu 1 scope service-worker
假设我们有一个sw-main.js控制主页的 Service Worker。
sw-main.js > 范围是“/”
假设我们有另一个服务人员sw-product.js来控制产品页面。
sw-product.js > 范围是“/product”
当我们访问主页,然后访问产品页面时,两个 Service Worker 都会被安装并激活。
我的问题是:当我们位于产品页面(范围在 下sw-product.js)时,主页 Service Worker ( sw-main.js) 会干扰 的sw-product.js行为吗?
(理想情况下,两个 Service Worker 都控制页面,但sw-product.js范围较窄,仅匹配产品页面,而主页 Service Worker 的sw-main.js范围更广。)
每个页面最多可以由一个 Service Worker 控制。如果为一个源注册了多个 Service Worker,并且它们的范围重叠,则具有最长匹配范围(即最具体的范围匹配)的 Service Worker 将“获胜”,并且它将成为控制该页面的那个 Service Worker。
我想澄清一个问题:一旦 Service Worker 控制了客户端页面,该页面发出的所有 HTTP 请求都将触发fetch控制 Service Worker 的处理程序。如果没有fetch处理程序,或者有fetch处理程序但它不调用event.respondWith()给定的请求,则该请求将针对网络发出,就好像没有 Service Worker 参与一样。该请求不会传递给可能也已注册的任何其他服务工作人员。只有一名 Service Worker 可以处理给定的请求。
(另一个响应可能描述了由于 HTTP 重定向而导致的行为/product或/product/类似的情况,这使得同一个请求看起来像是被处理了两次,而实际上它是两个不同的 HTTP 请求。)