缓存Busting不支持服务工作者

时间:2017-08-30 11:06:39

标签: javascript caching frontend service-worker progressive-web-apps

我正在使用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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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