我有一个 SPA https://example.com/customer/app
。
当您访问该页面时,如果您没有登录,SPA 会附加#/login
到 url,所以现在它显示为https://example.com/customer/app#/login
.
有一个服务工作者正在运行,安装了 scope /customer/app
。
当应用程序离线时,我试图从我的服务人员返回 200 响应。为简单起见,我目前对我的应用程序中的所有内容都使用了一个虚拟响应:
customer-sw.js 内容如下:
self.addEventListener('install', function(e) {
// Do nothing for now.
});
self.addEventListener('fetch', function(event) {
event.respondWith( new Response('Hello world') );
});
这意味着Hello world
如果服务工作者安装正确,每个请求都应该产生一个简单的(就好像它是一个以这种方式缓存的页面)。唯一的问题是我不能让它工作,除非在 url 的末尾有一个斜杠,即/customer/app/
而不是/customer/app
. 请求会/customer/app
导致检索实际页面,而请求/customer/app/
(或任何其他低于此的请求)会导致Hello world
.
我想我会发布这个问题,以防其他人对为什么他们不能让他们的服务人员用缓存页面做出响应感到困惑。似乎秘诀是确保您在网址末尾使用斜杠。我希望Google 的文档能指出这个小细节。
然而,出于好奇,有没有办法让它工作/customer/app
?现在看起来我需要重定向/customer/app
到/customer/app/
并进行测试以确保没有任何损坏。