在Rails中渲染大量的ActiveRecord对象

Nud*_*oll 5 performance activerecord json ruby-on-rails ruby-on-rails-3

我有一些Rails控制器动作以这种方式响应AJAX请求:

books = Book.all
render :json => { :books => books }
Run Code Online (Sandbox Code Playgroud)

这应该相对较快,但是需要花费5秒钟,这对于网络上的任何请求来说都太长了.日志看起来像这样:

Completed 200 OK in 5212ms (Views: 2679.7ms | ActiveRecord: 147.7ms)
Run Code Online (Sandbox Code Playgroud)

我不明白当我没有渲染到视图文件时如何在"视图"中花费2.6秒,或者总共花费5212ms.什么花了这么多时间,怎么会加快速度呢?

编辑:在这个特定的请求中返回了大约1000本书,我猜每个都是大约1kb的数据.编辑2:查看控制台中的响应,响应的大小为973kb.

Dre*_*rew 1

请参见第 1.3 章批量检索多个对象: http: //goo.gl/UR5B

另外,您可能想要研究急切加载记录。

  • 从他的日志输出中可以看出,ActiveRecord 部分花费的时间非常少。所有的视图渲染都会影响性能。Rails 似乎在将大型对象渲染为 JSON 时遇到了困难。我在我正在从事的项目中看到了类似的问题。 (2认同)