我有一些Rails控制器动作以这种方式响应AJAX请求:
books = Book.all
render :json => { :books => books }
这应该相对较快,但是它花费的时间超过5秒,这对于网络上的任何请求来说都太长了。日志看起来像这样:
Completed 200 OK in 5212ms (Views: 2679.7ms | ActiveRecord: 147.7ms)
我不明白当我没有渲染到视图文件时,如何在“视图”中花费2.6秒,或者总共可以花费5212ms。什么花了这么多时间,怎么会加快速度呢?
编辑:在这个特定的请求中返回了大约1000本书,我猜每个都是大约1kb的数据。编辑2:查看控制台中的响应,响应的大小为973kb。
答案 0 :(得分:2)
答案 1 :(得分:1)
参见章节1.3批量检索多个对象:http://goo.gl/UR5B。
此外,您可能希望查看急切加载记录。
答案 2 :(得分:0)
一旦预先加载了用于渲染视图的所有模型,就可以优化JSON的生成。你上面的内容(渲染:json => {:books => books})不是很快。
看看这个问题:What is the fastest way to render json in rails
考虑切换到另一种呈现JSON的方式。