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
}
我在同一个域上有 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
}