首页 文章

服务工作者意外行为,2个响应应用程序在同一个域上

提问于
浏览
0

我在同一个域上运行了2个 react apps (用create-react-app引导) . 一个应用程序在根目录( mydomain.com )上提供,另一个在子文件夹( mydomain.com/path )中提供 . 捆绑包使用nginx静态提供 .

当我转到 mydomain.com 时,注册了根应用程序的服务工作者,并且在进一步访问时从缓存中加载 index.html . 当我访问 mydomain.com/path/ 时,第二个应用程序的服务工作者已注册,并且在进一步访问时会从缓存中加载相应的 index.html .

问题是,当我访问 mydomain.com/pathwithout a trailing slash )时,根上的应用程序的服务工作者加载其index.html,并基本上覆盖为子文件夹注册的服务工作者( /path ) . 但是,如果我访问 mydomain.com/path/with a trailing slash ),它工作正常,并且子文件夹的服务工作者负责 .

我不确定这是否是服务工作者的预期行为 . 如果是,如何在不使用尾部斜线的情况下使其工作? (我已经尝试在注册子文件夹的服务工作者时明确设置范围)

1 回答

  • 1

    我担心这是当前浏览器处理不好的边缘情况 .

    但是,修改根路径上的service-worker并不困难,只有在路径不是 /path 时它才处于活动状态 .

    if( !self.location.pathname.startsWith('/path') ) {
        // Do root service-worker stuff
    }
    

相关问题