【问题标题】:Progressive web app within the scope of another progressive web app另一个渐进式网络应用程序范围内的渐进式网络应用程序
【发布时间】:2020-01-06 03:47:35
【问题描述】:

我希望为域 www.xyz.com 制作一个渐进式网络应用程序,并为域 www.xyz 制作另一个渐进式网络应用程序.com/abc。我应该怎么做?在这两种情况下,服务人员的行为会是什么?是否会有 2 个 Service Worker 注册,或者一个对两个 PWA 都有效?另外,我应该为他们制作 2 个清单文件吗?

【问题讨论】:

    标签: nested manifest service-worker progressive-web-apps


    【解决方案1】:

    两个 URL 只能有一个 PWA。创建 Service Worker 时,其范围涵盖当前文件夹和相关子文件夹。 如果将其置于根级别,则可以对两个 URL 使用一个服务工作者,而无需考虑更复杂的嵌套结构。

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

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


    更新

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

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

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

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

    【讨论】:

    • 我同意@Francesco 的观点,两个域都可以有一个 PWA,但我特别想制作 2 个不同的 PWA,一个作为主 PWA,起始 url 作为主页,范围为root 和另一个具有狭窄范围和不同起始 URL 的 PWA,那么在这种情况下,是否可以使用单个服务工作者和 2 个不同的清单文件来完成它?我也一定会浏览你的文章:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多