我正在对我的应用程序进行“优化”,我正在尝试理解rails(版本2.2.2)在渲染结束时给出的输出。
这是“旧的”方式:
Rendered user/_old_log (25.7ms)
Completed in 466ms (View: 195, DB: 8) | 200 OK
以及“新”方式:
Rendered user/_new_log (48.6ms)
Completed in 337ms (View: 192, DB: 33) | 200 OK
这些查询完全相同,区别在于旧的方法是解析日志文件,而新方法是查询数据库日志表。
页面的实际速度不是问题(用户理解这是一个缓慢的请求)...但我希望页面尽快响应,即使它是一个“慢”页面。< / p>
所以,我的问题是,这些数字代表/意味着什么?换句话说,哪种方式更快,为什么?
答案 0 :(得分:14)
此:
Rendered user/_old_log (25.7ms)
是时候呈现 _old_log
部分模板,来自ActiveSupport::Notification由ActionView::LogSubscriber处理
此:
Completed 200 OK in 466ms
是否返回了http状态,以及整个请求的总时间。它来自ActionController::LogSubscriber。
另外,请注意最后的那些括号内的项目:
(Views: 124.6ms | ActiveRecord: 10.8ms)
这些是分别渲染整个视图(部分和全部)和所有数据库请求的总时间,也来自ActionController::LogSubscriber。
答案 1 :(得分:3)
乔丹的回答是正确的。换句话说,第一个数字是页面加载的时间。第二个是视图生成的时间。最后一个数字是数据库处理您发送给它的所有查询所需的时间。
您还可以通过从第一个数字中减去最后两个数字来估算您的Controller和Model代码所花费的时间,但更好的方法是使用Benchmark.measure方法(http://www.ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html)。
您的新方式似乎有所改进,因为控制器/模型中的代码完成得更快。
答案 2 :(得分:-1)
您的新方式是花费更少的时间,但更多时间渲染模板。