服务工作者是否有可能永久破坏网站?

时间:2016-05-25 13:44:17

标签: javascript service-worker

想象一下,您使service worker实现了“离线优先”'策略(服务工作者的典型用例),并将其部署到生产中,但它有一个错误。该错误意味着它从未实际检查原始服务器的更新,甚至是自身。因此,在服务工作者在第一次访问时注册给定客户端后,该客户端将再次看不到该网站的任何更新(除非用户使用chrome://serviceworker-internals/或其他东西手动取消注册服务工作者)。换句话说,该网站将永远为这些用户打破。

上述情况是否可行?如果是这样,是否有确保它永远不会发生的策略?

2 个答案:

答案 0 :(得分:3)

TL; DR

没有perma中断,您可以随时更新服务工作者并修复您所做的缓存问题。

但是,如果您忘记更新缓存并正确使用它,将有可能永远不会更新某些内容。 (关于第一点,你总是能解决这个问题,没有perma休息)

LONG回答

据我所知,当你过分依赖缓存时会有一些不好的情况,取决于策略,它不太可能发生在“离线优先”策略上但是其他人。

如果您对Service Worker有深入了解,您就会知道我们可以针对某些浏览器请求进行某种网络平衡。对于排序,我们可以做类似的事情:

首先离线

首先在线

<强>最快

仅限在线

仅离线

<强>等。 (名称仅用于插图)

如果您使用仅离线等某些文件/地点,您最终可能无法更新地点/文件。

所以答案是:总有可能出现问题,但对于你担心的事情,可能并不总是会发生。如果您想阻止确保始终在离线时首先更新缓存内容

要添加 @anshulix 的答案,我不确定该行为是否来自旧服务工作者。但是对于我最近的实验,不管你在做什么,如果服务工作者安装了ON,它每次加载网站时都会尝试自动更新。

有了这个,您可以随时修复您的错误,最终用户将在首次加载网站或加载第二个网站后获得修复。

答案 1 :(得分:1)

哈哈,不,它不是这样发生的,服务工作者文件在24小时内定期更新,即使第一个服务工作者有错误,如果有任何变化,它总会在服务器上检查更新。

mdn