首页 文章

缓存Busting不支持服务工作者

提问于
浏览
0

我正在使用sw-precache和sw-toolbox来管理我的服务工作者 . 假设我有一个我要缓存的css文件

staticFileGlobs: ['public/asset/build/css/m_index.min.css']

它被运行gulp任务添加到服务工作者

var precacheConfig = [["public/asset/build/css/m_college.min.css","8d9b0e69820ba2fab83c45e2884bd61f"]

当服务工作者注册时,文件的哈希可以帮助我解决缓存问题 . 一切正常 .

现在考虑某个PC或用户或浏览器无法注册服务工作者的情况,并且每次都通过网络向他提供文件 . 在这种情况下,文件将存储在浏览器内存中,因为默认情况下没有缓存清除 . 即使开发人员更新了文件,它也可能会将旧文件提供给该用户一生 .

处理这种情况的方法是什么?

2 回答

  • 1

    我会使用Etag响应头(https://developer.mozilla.org/en/docs/Web/HTTP/Headers/ETag)来避免为用户加载过时的资产 .

  • 0

    对于寻求答案的人来说,有一个简单的解决方案 - COOKIES .

    尝试注册cookie时,如果出现故障,请设置cookie . 这个cookie在发送文件之前可以在后端读取如果没有设置cookie,加载没有缓存破坏的文件,或者在末尾添加缓存,以防止服务工作者没有运行的浏览器缓存 .

    因为cookie是唯一可以直接在前端和后端访问的东西 .

相关问题