我有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/
(后跟斜杠),并且子文件夹的服务人员负责,则效果很好。
我不确定这是否是服务人员的预期行为。如果是,如何在不使用斜杠的情况下使其正常工作? (我已经尝试在为子文件夹注册服务工作者时显式设置范围)
答案 0 :(得分:1)
恐怕这是当前浏览器无法很好处理的情况。
但是,修改根路径上的service-worker并不难,因此只有在路径不是/path
时它才是活动的。
if( !self.location.pathname.startsWith('/path') ) {
// Do root service-worker stuff
}