javascript – 硬刷新后注册服务工作者
作者:互联网
每当具有服务工作者的Web应用程序在硬刷新后重新加载(例如,对于Chrome的Ctrl F5),服务工作者就无法在之后注册.
根据W3C的文件
Note: navigator.serviceWorker.controller returns null if the request
is a force refresh (shift+refresh). The ServiceWorker objects returned
from this attribute getter that represent the same service worker are
the same objects.
因此,问题是:在执行硬刷新后是否真的无法注册服务工作者?我正在使用navigator.serviceWorker.controller检查服务工作者是否存在.请参阅随附的GIF,其中显示了与https://googlechrome.github.io/samples/service-worker/basic/页面的互动
解决方法:
这是一个非常复杂的故事,这里的漫长道路是:
This is actually a spec of Service Worker. And only present in recent
change of Chrome. For the earlier version of Chrome , Service Worker
has no any issue surviving a “force refresh”.
这意味着,只有在最近的Chrome更改中,问题仍然存在.在早期版本中,它没有持续存在,提示有关chrome的问题.此报价截至2016年 – 此后的所有版本将受到同样的影响,只有早期版本不会出现此问题.
有开发人员建议强制刷新或硬刷新应该总是清除所有类型的缓存.这与其存在的目的及其规格相匹配 – 但我个人认为这场比赛值得商榷.
解决方案:
您将能够使用js插件来检测Ctrl或Shift的键击…然后阻止“强制刷新”发生.
到目前为止,这是处理该问题的最简单的解决方案.
标签:javascript,google-chrome,service-worker,offlineapps 来源: https://codeday.me/bug/20190705/1388171.html