Rails 4.2 应用程序未提供 Gzipped 资源文件

9
我正在尝试通过提供GZipped资产来优化我的Rails 4应用,而不是提供常规编译后的资产。 GZip压缩在本Rails指南的第4.1.2节中进行了描述:http://guides.rubyonrails.org/asset_pipeline.html 预编译后,Rails资产管道确实生成了我的资产的gzipped版本,并且我可以在我的应用程序的公共文件夹中看到这些文件。
然而,在检查网络活动时,我的网页仍然使用未压缩的资产而不是gzipped版本。这让我认为我的Web服务器没有正确配置以提供gzipped资产。我正在使用NGINX和我的Rails应用程序前端的乘客模块。
首先,我尝试使用Rails资产管道指南中推荐的NGINX配置,将以下内容添加到我的配置文件中:
location ~ ^/(assets)/  {
  root /path/to/public;
  gzip_static on; # to serve pre-gzipped version
  expires max;
  add_header Cache-Control public;
}

我随后再次确认http_gzip_static_module确实已经与我的NGINX安装一起编译:

/opt/nginx/sbin/nginx -V    # --with-http_gzip_static_module

更新完 NGINX 配置,并确认 http_gzip_static_module 已经安装,接着我就开始在 production.rb 文件中尝试使用 config.serve_static_files 选项:

config.serve_static_files = true
config.serve_static_files = false
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

这三个设置都导致我的服务器回退到常规压缩资源。
最后,我尝试安装rack-zippy gem (https://github.com/eliotsykes/rack-zippy) - 它优先提供静态gzipped资源,否则回退到常规压缩资源。这也没有起作用,这可能意味着我的NGINX配置需要修改。
非常感谢任何帮助!
2个回答

2
这个答案解决了我的问题:https://dev59.com/Vonda4cB1Zd3GeqPEM98#40824720 我在config/production.rb中没有设置这个。
config.middleware.insert_before(Rack::Sendfile, Rack::Deflater)

# Compress JavaScripts and CSS.
config.assets.compress = true
config.assets.js_compressor = Uglifier.new(mangle: false)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接