有谁知道资产消化价值到底是怎么计算的吗?如果我有两个 JS 文件,其中包含各种其他包含的 JS 脚本,那么如果内部脚本都没有更改,每个文件是否会维护相同的摘要哈希?或者每次运行 asset:precompile 操作时都会计算新的摘要值?
接受的答案并不完全正确。我们为登台、演示和生产服务器构建静态资产,并且在每种情况下相同的资产被赋予不同的摘要值。
原来Rails环境也被考虑在内了。 Sprockets 按如下方式创建摘要:
# Sprockets::Environment::initialize
@digest_class = ::Digest::MD5
# Sprockets::Base::digest
@digest ||= digest_class.new.update(VERSION).update(version.to_s)
# Sprockets::Base::file_digest(path)
digest.file(path.to_s)
# Sprockets::Asset::initialize
@digest = environment.file_digest(pathname).hexdigest
导轨按如下方式钩入链轮:
# Sprockets::Railtie
app.assets = Sprockets::Environment.new(app.root.to_s) do |env|
env.version = ::Rails.env + "-#{config.assets.version}"
...
end
因此,rails 正在创建一个与 Rails 环境具有相同版本的 Sprockets 环境,并且 Sprockets 在创建摘要类时使用该版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)