标签:javascript google-chrome service-worker offlineapps
每当具有服务工作者的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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。