2017-08-07 28 views
0

我們有Rails 4.2應用程序在生產中運行,具有以下配置(與緩存相關)。我們迄今尚未實施任何緩存技術(默認設置)。Rails 4緩存:如何禁用特定控制器操作或視圖的默認緩存?

config.action_controller.perform_caching = true 

# Use a different cache store in production. 
# config.cache_store = :mem_cache_store 

我遇到了一個特定視圖的問題,因爲它沒有顯示更新的數據。

有沒有一種方法可以禁用特定視圖的片段緩存而不是整個應用程序?

+1

爲什麼不直接從該視圖中刪除您'緩存some_model do'塊? – omnikron

+0

@omnikron - 沒有這樣的代碼寫在視圖中。我認爲Rails在內部處理 –

+0

不,你必須顯式地調用'cache',否則你的視圖將不會被緩存。如果你沒有那個地方,那麼你的觀點都沒有被緩存,除非你正在做其他事情。有關更多信息,請參閱[rails高速緩存文檔](http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching)。也許你對它說的「默認情況下Rails提供片段緩存」感到困惑?這只是意味着它在默認情況下是可用的 - 它並沒有爲你實現。 – omnikron

回答

1

TLDR:雖然緩存可能會導致問題,但值得驗證的是在嘗試修復之前確實使用了它!

禁用緩存單一視圖的最簡單方式,也是最明顯的(但可能很容易錯過):

從您的視圖中刪除cache model do塊。

默認情況下,Rails不會爲你做任何緩存,所以這將完全照顧它。如果您沒有撥打電話cache,並且您的視圖中有一個區域,則您的未使用緩存

E.g:

緩存:

# app/views/something_important/show.html.haml 
= cache something_important do 
    = render_something_expensive 

不會被緩存:

# app/views/something_important/show.html.haml 
= render_something_expensive