gpt4 book ai didi

ruby-on-rails - 如何在 Rails 4.2 中启用 gzip 文件创建?

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:10 24 4
gpt4 key购买 nike

截至 2015 年 4 月 14 日,似乎 .gz 文件编译已从最新版本的 Rails 中的 sprockets 中删除。

https://github.com/rails/sprockets/issues/26

我在 S3 服务器上使用这些文件来加速页面加载,但是由于 gzip 文件的编译已根据上述线程被删除,所以我的脑海中浮现出一个大问题。如果您使用 Assets 主机,编译 .gz 文件的新解决方案是什么?如果我从我的服务器提供文件,这将相对容易,但静态 Assets 托管在其他地方,需要预编译。

无论如何,希望有人已经解决了这个问题。如果我无法让 Assets 管道像以前那样生成和上传 .gz 文件,我的临时解决方案是使用 grunt-contrib-compress( https://github.com/gruntjs/grunt-contrib-compress ) 手动创建它们。但众所周知,手动解决方案无法很好地扩展,我宁愿让 Assets 管道在部署时处理这一问题。

非常感谢您的帮助。 :)

最佳答案

由于 Rake 不会覆盖而是链接任务,您可以声明另一个 assets: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

关于ruby-on-rails - 如何在 Rails 4.2 中启用 gzip 文件创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30261816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com