我正在使用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 回答
我会使用Etag响应头(https://developer.mozilla.org/en/docs/Web/HTTP/Headers/ETag)来避免为用户加载过时的资产 .
对于寻求答案的人来说,有一个简单的解决方案 - COOKIES .
尝试注册cookie时,如果出现故障,请设置cookie . 这个cookie在发送文件之前可以在后端读取如果没有设置cookie,加载没有缓存破坏的文件,或者在末尾添加缓存,以防止服务工作者没有运行的浏览器缓存 .
因为cookie是唯一可以直接在前端和后端访问的东西 .