Ruby on rails rails中的HTTP压缩不适用于JSON响应
我有rails 3.2.1应用程序和nginx 在nginx配置中,我将Ruby on rails rails中的HTTP压缩不适用于JSON响应,ruby-on-rails,ruby,http,nginx,http-compression,Ruby On Rails,Ruby,Http,Nginx,Http Compression,我有rails 3.2.1应用程序和nginx 在nginx配置中,我将gzip设置为on,压缩适用于页面、css和js文件 但它不适用于JSON响应。我发现rails的解决方案是将:config.middleware.use Rack::Deflater添加到application.rb中 这也有帮助:以前的响应是45Kb,现在接近8Kb 但是,现在我发现压缩只适用于Mac Chrome、Mac Firefox和Windows Chrome 对于IE 10、IE 11和Windows Fire
gzip设置为on代码>,压缩适用于页面、css和js文件
但它不适用于JSON响应。我发现rails的解决方案是将:config.middleware.use Rack::Deflater
添加到application.rb中
这也有帮助:以前的响应是45Kb,现在接近8Kb
但是,现在我发现压缩只适用于Mac Chrome、Mac Firefox和Windows Chrome
对于IE 10、IE 11和Windows Firefox,它不起作用:
- 我在请求头中看到
接受编码:gzip,deflate
- 我没有在响应头中看到
内容编码:gzip
- 响应大小仍然是45Kb李>
请提供帮助。通过将压缩配置从rails移动到nginx配置来修复。
我添加到.conf
:
# Enable Gzip
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_proxied any;
gzip_types
# text/html is always compressed by HttpGzipModule
text/css
text/javascript
text/xml
text/plain
text/x-component
application/javascript
application/json
application/xml
application/rss+xml
font/truetype
font/opentype
application/vnd.ms-fontobject
image/svg+xml;
gzip_static on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
谢谢@Alexey Ten的帮助
它可以工作,但压缩在IE中不可见。
Windows上的一些安全程序捕获“gzip”HTTP响应,从存档中提取,检查病毒,并从响应头中删除内容编码:gzip
。IE一如既往的优秀:)也许你只需要修改gzip_类型
来包含application/json
@AlexeyTen,谢谢,我会试试。@AlexeyTen但为什么它只在Mac和Chrome上工作?)我想,你不知道,因为nginx将执行gzip。您可以在后端压缩响应,然后,如果您有代理集,nginx将不再尝试gzip它。头接受编码“gzip”;当然,Nginx提供了一种更好的压缩配置。所以Alexey十对,不要压缩Ruby端,让Nginx来处理