Rails 3缓慢部分渲染

时间:2011-03-26 12:31:28

标签: ruby-on-rails ruby-on-rails-3 views partials

第一个代码:

# matches/index.html.haml
%ul.match_list
- @matches.each do |match|
  %li
    =render match
# matches/_match.html.haml
%li
  =match.id
Completed 200 OK in 665ms (Views: 496.3ms | ActiveRecord: 142.1ms)

慢下来。

第二段代码:

# matches/index.html.haml
%ul.match_list
- @matches.each do |match|
  %li
    =match.id
Completed 200 OK in 196ms (Views: 30.0ms | ActiveRecord: 134.6ms)

好多了。

为什么不使用partial会这么快?

1 个答案:

答案 0 :(得分:9)

您是否在开发模式下运行?我不知道Rails的内部工作原理,但我知道它在生产中缓存视图代码,而在开发中重新读取文件。如果它在请求的持续时间内缓存了视图会很好,但它可能不会,这可能是问题。

此外,不是循环匹配,而是尝试给出以下旋转:

= render @matches

它肯定更简洁,如果问题是重新读取文件,Rails可能会优化该过程,如果它知道你将要循环。