【问题标题】:Cache busting: append query string or rename file?缓存破坏:附加查询字符串或重命名文件?
【发布时间】:2015-12-11 18:05:32
【问题描述】:

当我们尝试破坏静态资产缓存时,有两种常用方法:

  1. 通过附加查询字符串,如assets/file.ext?v=123abc

  2. 通过重命名文件,如assets/file.123abc.ext

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

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

对此有什么想法吗?

【问题讨论】:

    标签: caching gulp frontend


    【解决方案1】:

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

    如果我们使用 CDN 服务静态资产,动态页面和静态资产是分开托管的。一旦我们要发布一个新版本的应用,就会发生冲突:应该先更新哪部分资源?

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

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

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

    更多详情请阅读这篇文章(中文):https://www.zhihu.com/question/20790576/answer/32602154

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-11
      • 2019-03-14
      • 1970-01-01
      • 2016-11-05
      • 2021-04-22
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      相关资源
      最近更新 更多