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

发布于 2022-09-11 22:30:37 字数 765 浏览 19 评论 0

问题描述

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

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

问题图片:
图片描述

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文