Service Worker 意外行为与同一域中的 2 个 React 应用程序

Service worker unexpected behavior with 2 react apps on same domain

我在同一个域上有 2 个 react apps(使用 create-react-app 引导)运行。一个应用程序在根 (mydomain.com) 上提供,另一个在子文件夹 (mydomain.com/path) 中提供。这些包是使用 nginx 静态提供的。

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

问题是,当我访问 mydomain.com/path 没有尾部斜杠 )时,根应用程序的服务工作者加载其 index.html ,并且基本上覆盖了为子文件夹 (/path) 注册的服务工作者。但是,如果我访问 mydomain.com/path/ 带有尾部斜杠 ),它工作正常,子文件夹的服务工作人员负责。

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

恐怕这是当前浏览器不能很好处理的边缘情况。

然而,修改根路径上的 service-worker 使其仅在路径不是 /path.

时才处于活动状态并不难
if( !self.location.pathname.startsWith('/path') ) {
    // Do root service-worker stuff
}