2017-06-15 12 views
4

例如,我叫了三諧音在我的食譜/ _cuisines.html.erb文件:Ruby on Rails:爲什麼在我的視圖中調用局部渲染會花費很長時間?

<%= render "recipes/cuisines/denmark.html %> 
    <%= render "recipes/cuisines/spain.html %> 
    <%= render "recipes/cuisines/italy.html %> 

東西都不是在該文件中。部分只是靜態內容,沒有集合。這是我從我的日誌中獲取:

Rendered recipes/cuisines/_denmark.html.erb (4.6ms) [cache miss] 
    Rendered recipes/cuisines/_spain.html.erb (2.3ms) [cache miss] 
    Rendered recipes/cuisines/_italy.html.erb (5.3ms) [cache miss] 
    Rendered recipes/_cuisines.html.erb (161.5ms) [cache miss] 

如果我刪除諧音之一,我得到的是這樣的:

Rendered recipes/cuisines/_denmark.html.erb (4.6ms) [cache miss] 
    Rendered recipes/cuisines/_spain.html.erb (2.3ms) [cache miss] 
    Rendered recipes/_cuisines.html.erb (101.7ms) [cache miss] 

取出另一部分,我得到:

Rendered recipes/cuisines/_denmark.html.erb (4.6ms) [cache miss] 
    Rendered recipes/_cuisines.html.erb (50.5ms) [cache miss] 

刪除每一個部分,我得到這樣的事情:

Rendered recipes/_cuisines.html.erb (0.9ms) [cache miss] 

看來,它需要一個非常時期,從而使得各部分即使部分本身是非常小的。你知道是什麼原因導致的,我能做些什麼來更快地調用偏好函數?建議不要叫部分嗎?

(我用Rails 5.1.1和Ruby 2.5.0dev)

回答

2

我相信你已經粘貼從開發環境日誌。 如果是這樣的話,那是因爲config.cache_classes這是默認false發展和true用於在軌道導軌提到測試和生產環境。

config.cache_classes控制是否應在每個請求上重新加載應用程序類和 模塊。在 開發模式中默認爲false,在測試和生產模式下爲true。

config.action_view.cache_template_loading控制是否 模板應在每個請求重新加載。默認爲 爲config.cache_classes設置的值。

我建議在testproduction環境中運行的應用程序,然後檢查日誌。

+0

我不知道它會如此簡單:)非常感謝普拉莫德! – sjsc

相關問題