2011-03-26 72 views
3

第一代碼:導軌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) 

好多了。

爲什麼在不使用偏色時會快得多?

+0

對不起,我第一次發表評論時看不到結果。 – sosborn 2011-03-26 13:03:09

+0

開發或生產模式? – 2011-03-26 13:20:36

+0

它的開發模式,在生產模式下運行的產品 – methyl 2011-03-26 13:56:22

回答

9

您是否在開發模式下運行?我不知道Rails的內部工作原理,但我知道它在生產環境中緩存視圖代碼,而它在開發中重新讀取文件。如果它在請求的持續時間內緩存視圖會很好,但它可能不會,這可能是問題。

此外,而不是遍歷的比賽,試着給下面的一掄:

= render @matches 

這絕對是更簡潔,而且,問題是否再次讀取該文件,它可能是Rails的可能優化該過程是否知道你將要循環。

+8

'render(:partial =>'match',:collection => @matches)'是指定這個的更正式的方法,並且比獨立運行一堆'render'調用要快。由於你引用的原因,生產模式也比開發模式快得多。 – tadman 2011-03-26 17:34:26