为什么serviceWorker通过fetch获取的资源,会得到上一个版本的资源?
问题描述
我在使用serviceWorker管理缓存,套路很一般,首先在active事件删除以前版本缓存,然后在fetch事件缓存新版本资源。
在sw激活之前,已经删除了旧版cache。
正常情况应该是新版本的cache里面的缓存文件的时间晚于cache的创建时间,并且获取的都是新版本的文件。
但是问题出现了:新版本的cacheStorage里面居然有上一个版本的资源,导致页面逻辑出现问题
这个问题不是必现,只是偶尔会出现。
浏览器版本: chrome 76.0.3809.132 (正式版本) (64 位)
相关代码:
问题图片:
你期待的结果是什么?实际看到的错误信息又是什么?
可以看到,cache的创建时间是2019.09.12 14:30。
并且旧版本的cache在激活前已经删除。
然后通过网络请求然后缓存资源,正常情况下资源的缓存时间是晚于cache的创建时间的。
但是实际情况是,部分资源任然是旧版sw里面的资源
虽然这个问题不是必现,但是一出现就会导致新版和旧版共同存在,导致页面逻辑出错误。
请问各位大佬,到底哪里出现了问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论