Ruby on rails 如何在Rails 4.2中启用gzip文件创建?
截至2015年4月14日,最新版本的Rails似乎已从链轮中删除了Ruby on rails 如何在Rails 4.2中启用gzip文件创建?,ruby-on-rails,ruby,sprockets,gzip,Ruby On Rails,Ruby,Sprockets,Gzip,截至2015年4月14日,最新版本的Rails似乎已从链轮中删除了.gz文件编译 我在S3服务器上使用了这些文件来加速页面加载,但是由于gzip文件的编译已经按照上面的线程被删除,所以我脑海中浮现出一个大问题。如果您使用的是资产主机,那么编译.gz文件的新解决方案是什么?如果我从我的服务器提供文件,这将相对容易,但静态资产托管在其他地方,需要预编译 无论如何,希望有人能想出这个办法。如果我不能像以前那样让资产管道生成和上传.gz文件,我的临时解决方案是使用grunt-contrib-compr
.gz
文件编译
我在S3服务器上使用了这些文件来加速页面加载,但是由于gzip文件的编译已经按照上面的线程被删除,所以我脑海中浮现出一个大问题。如果您使用的是资产主机,那么编译.gz
文件的新解决方案是什么?如果我从我的服务器提供文件,这将相对容易,但静态资产托管在其他地方,需要预编译
无论如何,希望有人能想出这个办法。如果我不能像以前那样让资产管道生成和上传.gz
文件,我的临时解决方案是使用grunt-contrib-compress()手动创建它们。但是我们都知道,手动解决方案不能很好地扩展,我宁愿让资产管道在部署时处理这个问题
非常感谢您的帮助。:) 由于Rake不覆盖任务,而是链接任务,所以可以声明另一个
资产:precompile
。以下解决方案应在不更改任何部署脚本的情况下工作:
#/lib/tasks/assets.rake
namespace :assets do
# We make use of rake's behaviour and chain this after rails' assets:precompile.
desc 'Gzip assets after rails has finished precompilation'
task :precompile do
Dir['public/assets/**/*.{js,css}'].each do |path|
gz_path = "#{path}.gz"
next if File.exist?(gz_path)
Zlib::GzipWriter.open(gz_path) do |gz|
gz.mtime = File.mtime(path)
gz.orig_name = path
gz.write(IO.binread(path))
end
end
end
end
并在资产预编译后的部署期间触发它。不应该有太大的不同,就好像你要将其构建到资产管道中一样。这可以接受吗?可能,我正在与一些人讨论这个问题,试图找出一种方法,将他们建议的命令绑定到
rake资产:precompile
。谢谢你的建议,我们会看到结果的。:)