压缩来自Rails应用程序的JSON响应

bra*_*rad 3 json gzip ruby-on-rails apache2

我们有一个应用程序,可以查询客户的位置.我们已经达到了一些客户可能拥有超过10,000个位置的程度.对此的JSON响应可能会非常大,有时会超过1mb.

我首先想知道压缩这个的最佳方法.我们在使用JRuby在trinidad中运行的Rails应用程序前面有apache.我可以设置mod_deflate以始终压缩application/json的任何响应吗?我该怎么做呢?

接下来,对gzip'd json的浏览器支持是什么?当我gzip一个200k的样本响应时,它下降到30k.这是一笔可观的节省.我们真的希望能够最小化响应的大小,而不必最小化返回的位置数量.

And*_*erg 11

通常,对于较新版本的Rails,您可以通过添加来实现

use Rack::Deflater
Run Code Online (Sandbox Code Playgroud)

config.ru文件中的"运行"行之前.这将与支持gzip的浏览器/客户端完美配合.我们在主要网站上使用它.

JRuby用户的注意事项:这假设你的Rails应用程序是通过Rack启动的,它通常不适用于JRuby.您需要最新版本的JRuby-Rack并在Warbler中配置它以"机架"模式而不是"轨道"模式运行.


Mar*_*c B 5

如果浏览器支持gzip/deflated数据,那么JSON会很好地完成它.AJAX数据只是代表脚本而不是人类的常规HTTP请求.在HTTP级别,传输一些HTML或JSON字符串之间绝对没有区别 - 它只是数据.