3

第一个代码:

# 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)

好多了。

为什么不使用部分时它会快得多?

4

1 回答 1

9

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

此外,不要循环匹配,而是尝试进行以下操作:

= render @matches

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

于 2011-03-26T13:12:32.887 回答