如何防止硬重载绕过服务工作者?

时间:2016-02-25 13:09:13

标签: javascript service-worker

硬重新加载或硬刷新(例如Chrome中的转移重新加载)似乎绕过了服务工作者。

例如,加载服务工作者控制的页面,例如https://airhorner.com/https://wiki-offline.jakearchibald.com/,将网络设置为"离线"在devtools,然后硬重新加载页面导致破坏"没有互联网连接"页。 (正常的重新加载显示了缓存的页面,如预期的那样。)

有没有办法阻止这种情况,或者在设备离线时使用服务工作者作为后备?

1 个答案:

答案 0 :(得分:7)

这是在service worker specification

中明确调出的行为
  如果请求是a,

navigator.serviceWorker.controller将返回null   强制刷新(shift + refresh)。从中返回的ServiceWorker对象   这个表示同一服务工作者的属性getter是   相同的对象。

所以它不仅仅是一个浏览器实现细节。

如果您认为服务工作者不应该采取这种行为有充分理由,那么最好的办法就是在规范issue tracker中提出您的疑虑。