想象一下,您使service worker实现了“离线优先”'策略(服务工作者的典型用例),并将其部署到生产中,但它有一个错误。该错误意味着它从未实际检查原始服务器的更新,甚至是自身。因此,在服务工作者在第一次访问时注册给定客户端后,该客户端将再次看不到该网站的任何更新(除非用户使用chrome://serviceworker-internals/
或其他东西手动取消注册服务工作者)。换句话说,该网站将永远为这些用户打破。
上述情况是否可行?如果是这样,是否有确保它永远不会发生的策略?
答案 0 :(得分:3)
没有perma中断,您可以随时更新服务工作者并修复您所做的缓存问题。
但是,如果您忘记更新缓存并正确使用它,将有可能永远不会更新某些内容。 (关于第一点,你总是能解决这个问题,没有perma休息)
据我所知,当你过分依赖缓存时会有一些不好的情况,但取决于策略,它不太可能发生在“离线优先”策略上但是其他人。
如果您对Service Worker有深入了解,您就会知道我们可以针对某些浏览器请求进行某种网络平衡。对于排序,我们可以做类似的事情:
首先离线
首先在线
<强>最快强>
仅限在线
仅离线
<强>等。强> (名称仅用于插图)
如果您使用仅离线等某些文件/地点,您最终可能无法更新地点/文件。
所以答案是:总有可能出现问题,但对于你担心的事情,可能并不总是会发生。如果您想阻止确保始终在离线时首先更新缓存内容
要添加 @anshulix 的答案,我不确定该行为是否来自旧服务工作者。但是对于我最近的实验,不管你在做什么,如果服务工作者安装了ON,它每次加载网站时都会尝试自动更新。
有了这个,您可以随时修复您的错误,最终用户将在首次加载网站或加载第二个网站后获得修复。
答案 1 :(得分:1)
哈哈,不,它不是这样发生的,服务工作者文件在24小时内定期更新,即使第一个服务工作者有错误,如果有任何变化,它总会在服务器上检查更新。