【发布时间】:2023-03-09 02:07:01
【问题描述】:
我在文档中找不到这个问题的明确答案。许多参考资料只是说“更改版本会使资产无效”。那么,指纹机制不也是这样做的吗,它根据文件内容和名称生成哈希标签?有谁知道config.assets.version 到底是干什么用的?
【问题讨论】:
标签: ruby-on-rails-3 asset-pipeline
我在文档中找不到这个问题的明确答案。许多参考资料只是说“更改版本会使资产无效”。那么,指纹机制不也是这样做的吗,它根据文件内容和名称生成哈希标签?有谁知道config.assets.version 到底是干什么用的?
【问题讨论】:
标签: ruby-on-rails-3 asset-pipeline
config.assets.version 是用于 MD5 哈希生成的选项字符串。这可以更改为强制重新编译所有文件。*
当资产内容未更改但您想更改随资产提供的响应标头但这些标头缓存在 CDN 或用户浏览器之类的某个位置时,这会很有帮助。
更改您的资产版本将允许您使用新的 md5 哈希重新生成所有资产,从而允许您使用新的标头为您的 CDN 提供相同的资产。
*来自RailsGuides - Configuring Rails Applications
注意:截至 2016 年 5 月 20 日,此功能似乎已经被破坏了一段时间https://github.com/rails/sprockets-rails/issues/240。另一种方法是更改 Rails.application.config.assets.prefix 的值。
【讨论】:
rake assets:clobber 不会有什么坏处,但这不是 100% 必要的,因为您生成的视图 html 和 css 将在路径中引用具有新前缀的资产文件,从而使旧资产有效地不可见普通用户。