我正在尝试制作一个具有离线功能的 Spring MVC 应用程序。除了获取处理程序之外,一切都工作正常。
问题:
我能够成功注册我的服务工作线程,但是当涉及到获取处理程序时,它不起作用。
我尝试过的事情:
在获取处理程序的上方和下方使用了调试器。我发现它从未被调用。我无法找出这种奇怪行为背后的原因。
self.addEventListener('install', function(event) {
console.log('The service worker is being installed.');
event.waitUntil(precache());
});
self.addEventListener('fetch', function(event) {
alert("Hi");
});
请您参考如下方法:
你可能正在做的是 navigator.serviceWorker.register( '{SOME_RESOURCE_PATH}/service-worker.js')
甚至设置scope: './'
。这样做的问题是,它会使您的提取仅在 https://foo.bar/{SOME_RESOURCE_PATH}/
上触发。这意味着您需要将 sw 设置到站点的根目录上以删除所需的资源路径。您需要做的就是更改配置,将软件放在站点的根目录下。
例如。您可以在 mvc-config.xml
<mvc:resources mapping="/**" location="classpath:/PATH_TO_SW/"/>
然后注册软件看起来像
navigator.serviceWorker.register( '/service-worker.js')