当我们试图破坏静态资产缓存时,有两种常见的方法可以做到这一点:
通过附加assets/file.ext?v=123abc
重命名assets/file.123abc.ext
然而,经过几天的搜索,我发现大多数构建工具都喜欢重命名文件,例如: gulp-rev。在我看来,这种修改会在服务器上生成大量文件块:
assets
|_ file.a.ext
|_ file.b.ext
|_ file.c.ext
|_ file.d.ext
|...
对此有何想法?
答案 0 :(得分:3)
经过几天的搜索,我发现了一些有趣的查询字符串解决方案(assets/file.ext?v=123abc
):
如果我们使用CDN提供静态资产,则动态页面和静态资产将单独托管。一旦我们想要发布新版本的应用程序,就会发生冲突:应该首先更新哪部分资源?
首页。如果用户在更新动态网页后立即访问您的网站,则资产会指向新版本,例如assets/file.ext?v=456def
,然后浏览器下载旧资产并将其作为新版本缓存,不幸的是,这些用户永远无法获得正确的资源。
资产优先。假设有一些新用户在新版资产发布后立即访问您的网站,旧网页和新脚本,啊哈!可能存在一些致命的错误,您的网站会变得很糟糕!
所以这里是重命名文件(assets/file.123abc.ext
)的解决方案。不同版本的文件命名方式不同,因此不会相互覆盖。因此我们首先更新资产,然后更新页面,一切都按预期进行,哇哦!
有关详细信息,请阅读本文(中文):https://www.zhihu.com/question/20790576/answer/32602154