为什么serviceWorker通过fetch获取的资源,会得到上一个版本的资源?

启真湖畔
  • 0
新手上路,请多包涵

问题描述

我在使用serviceWorker管理缓存,套路很一般,首先在active事件删除以前版本缓存,然后在fetch事件缓存新版本资源。
在sw激活之前,已经删除了旧版cache。
正常情况应该是新版本的cache里面的缓存文件的时间晚于cache的创建时间,并且获取的都是新版本的文件。
但是问题出现了:新版本的cacheStorage里面居然有上一个版本的资源,导致页面逻辑出现问题
这个问题不是必现,只是偶尔会出现。

浏览器版本: chrome 76.0.3809.132 (正式版本) (64 位)
相关代码:
图片描述

问题图片:
图片描述

你期待的结果是什么?实际看到的错误信息又是什么?

可以看到,cache的创建时间是2019.09.12 14:30。
并且旧版本的cache在激活前已经删除。
然后通过网络请求然后缓存资源,正常情况下资源的缓存时间是晚于cache的创建时间的。

但是实际情况是,部分资源任然是旧版sw里面的资源
虽然这个问题不是必现,但是一出现就会导致新版和旧版共同存在,导致页面逻辑出错误。
请问各位大佬,到底哪里出现了问题?

评论
阅读 656
撰写回答

登录后参与交流、获取后续更新提醒

宣传栏