我一直在玩弄服务人员和 sw-toolbox。两者都是很好的方法,但似乎都有自己的弱点。
我的项目开始使用 Google 的服务工作者方法(链接)。我看到的方式是您必须手动更新缓存清除的版本号。我也可能是错的,但我认为用户访问过的页面不会被缓存。
与 sw-toolbox 方法相比,我只需要添加以下代码:
self.toolbox.router.default = self.toolbox.networkFirst;
self.toolbox.router.get('/(.*)', function (req, vals, opts) {
return self.toolbox.networkFirst(req, vals, opts)
.catch(function (error) {
if (req.method === 'GET' && req.headers.get('accept').includes('text/html')) {
return self.toolbox.cacheOnly(new Request(OFFLINE_URL), vals, opts);
}
throw error;
});
});
那么缓存页面的问题就迎刃而解了。这是我的问题:在将 sw-toolbox 应用到我的项目后,旧的服务人员不会被清除或替换为新的,除非我去开发工具清除它。
任何想法如何解决这个问题?