另一个渐进式网络应用程序范围内的渐进式网络应用程序

Progressive web app within the scope of another progressive web app

我希望为域 www.xyz.com 制作一个渐进式 Web 应用,并为域 www.xyz.com/abc.在这两种情况下,我应该如何处理以及服务人员的行为是什么?会有 2 个 Service Worker 注册还是一个注册可以同时适用于两个 PWA?另外,我应该为他们制作 2 个清单文件吗?

两个网址只能有一个 PWA。当您创建服务工作者时,其范围涵盖当前文件夹和相关子文件夹。 如果将它放在根级别,则可以为两个 URL 使用一个 service worker,而无需考虑更复杂的引入嵌套结构。

您可以轻松地在同一个 Service Worker 中定义不同的缓存策略。

如果你想 deepen the PWA topic,你可以看看我写的关于它们的文章,从基本概念开始,然后深入到更高级的主题。


更新

清单文件的范围 属性 决定了 Service Worker (SW) 可以拦截哪些 HTTP 调用。

如果您有 scope: '/',您的 SW 将拦截您的应用发出的所有 HTTP 请求。
如果是/user,SW无法拦截不在其范围内的请求(例如/orders/code.js),但它会拦截用户下的所有GET调用根,例如 /user/details.

在你的情况下,你可以有两个 SW(即使在同一页面上),你可以在其中定义不同的拦截范围,你只需要小心不要重叠它们之间的范围。 如果您还计划缓存静态资产,请记住 SW 的范围由存储 SW 文件的文件夹及其子文件夹指定。

关于多个清单文件,Jeff 给出了 answer about it on SO.