缓存清除:追加查询字符串或重命名文件?

时间:2015-12-11 18:05:32

标签: caching gulp frontend

当我们试图破坏静态资产缓存时,有两种常见的方法可以做到这一点:

  1. 通过附加assets/file.ext?v=123abc

  2. 等查询字符串
  3. 重命名assets/file.123abc.ext

  4. 等文件

    然而,经过几天的搜索,我发现大多数构建工具都喜欢重命名文件,例如: gulp-rev。在我看来,这种修改会在服务器上生成大量文件块:

    assets
     |_ file.a.ext
     |_ file.b.ext
     |_ file.c.ext
     |_ file.d.ext
     |...
    

    对此有何想法?

1 个答案:

答案 0 :(得分:3)

经过几天的搜索,我发现了一些有趣的查询字符串解决方案(assets/file.ext?v=123abc):

如果我们使用CDN提供静态资产,则动态页面和静态资产将单独托管。一旦我们想要发布新版本的应用程序,就会发生冲突:应该首先更新哪部分资源?

  1. 首页。如果用户在更新动态网页后立即访问您的网站,则资产会指向新版本,例如assets/file.ext?v=456def,然后浏览器下载旧资产并将其作为新版本缓存,不幸的是,这些用户永远无法获得正确的资源。

  2. 资产优先。假设有一些新用户在新版资产发布后立即访问您的网站,旧网页和新脚本,啊哈!可能存在一些致命的错误,您的网站会变得很糟糕!

  3. 所以这里是重命名文件(assets/file.123abc.ext)的解决方案。不同版本的文件命名方式不同,因此不会相互覆盖。因此我们首先更新资产,然后更新页面,一切都按预期进行,哇哦!

    有关详细信息,请阅读本文(中文):https://www.zhihu.com/question/20790576/answer/32602154