2

我正在使用带链轮的中间人将我的 js 和 css 文件打包到一个文件中。这工作正常。但我想知道是否可以从中间人的链轮中启用指纹功能。

例如,我的文件all.js,其中所有内容都被编译,被重命名为all-4e17d33ff76d744900c2691a71ed83e4.js.

如果图像可以做到这一点,那也很棒。

4

2 回答 2

7

利用

activate :asset_hash

在您的中间人配置中(提高可缓存性)。

(您需要使用其中一个 :asset_hash:cache_buster,而不是两者。)

于 2012-12-10T21:28:12.610 回答
-1

我还没有找到开箱即用的解决方案,但我制定了自己的解决方案。在config.rb我正在运行的after_build钩子。不是最好的方法,但它有效:

after_build do
  require 'fileutils'
  delete_except "build/javascripts/", "all.js"
  delete_except "build/stylesheets/", "all.css"

  require 'digest/sha1'
  sha1 = Digest::SHA1.hexdigest Time.now.getutc.to_i.to_s
  allJS = "all-" + sha1 + ".js"
  allCSS = "all-" + sha1 + ".css"
  File.rename("build/javascripts/all.js", "build/javascripts/" + allJS)
  File.rename("build/stylesheets/all.css", "build/stylesheets/" + allCSS)

  index_file = "build/index.html"
  html = File.read(index_file)
  html = html.gsub(/all\.js/, allJS)
  html = html.gsub(/all\.css/, allCSS)

  File.open(index_file, "w") { |file| file.puts html }
end

我正在执行以下操作:

  • 删除不必要的生成 .js 和 .css 文件
  • 根据时间生成一个 sha1 哈希(这对我来说已经足够了)
  • 将哈希附加到文件
  • index.html用新的文件名更新
于 2012-11-21T08:26:10.710 回答