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

mjs*_*mjs 4 javascript service-worker

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

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

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

Jef*_*ick 7

这种行为被明确地作为服务工作者规范的一部分调出:

如果请求是强制刷新(shift + refresh),navigator.serviceWorker.controller将返回null.从此属性getter返回的表示同一服务工作者的ServiceWorker对象是相同的对象.

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

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