2012-12-30 67 views
0

出於某種原因,下面也沒有在10秒Rails的高速緩存未到期

def rcache_value 
    @random_val_from_cache = Rails.cache.fetch("random_val_from_cache",:expires_in=>10.seconds) do 
    rand 10000 
end 

I輸出@random_val_from_cache後,我的我的應用程序的頁腳到期。我的參數錯了嗎?我在Rails 3上。

回答

0

那麼,假設您的示例中的語法錯誤僅僅是SO打字錯誤,那麼問題可能是因爲您正在使用實例變量。高速緩存的值被設置爲該實例變量,除非手動完成,否則不會被重置,除非該類重新加載(在服務器重新啓動之前不會發生)。你應該做這樣的事情:

def rcache_value 
    Rails.cache.fetch("random_val_from_cache", :expires_in => 10.seconds) do 
    rand 10000 
    end 
end 

裏調用:

<%= rcache_value %> 
+0

這完全取決於這是一個實例變量 –

+0

那麼如何將實例變量設置爲緩存值?此外,我的例子中有什麼語法錯誤?第三,我的視圖無法訪問控制器中的方法... – K2xL

0

找到了答案。 expires_in在fetch中被棄用,以支持寫入。所以你必須寫一個檢查,看看它是否已經存在緩存中,如果沒有,然後寫一個