2009-05-22 70 views
1

這一個讓我難住。Rails - 片段緩存未到期

我有一個緩存片段的觀點:

- cache :key=>"news" do  
    %h2 News 
    - etc 

我有一個使用機:

def expire_home_cache 
    puts "expire_home_cache" 
    expire_fragment(:key => "news") 
end 

清掃機,被稱爲我可以在控制檯輸出中看到「expire_home_cache」。

但片段不更新...

任何想法?

回答

2

你可以試試這個:

cache("news") do  
    %h2 News 
    - etc 
    end 

和...

def expire_home_cache 
    puts "expire_home_cache" 
    expire_fragment("news") 
end 

...或者試試這個...

- cache({:key=>"news"}) do  
    %h2 News 
    - etc 

我想這個問題可能是那個ruby或者rails很難確定關鍵是什麼,所以cache方法和expire_fragment會生成兩個不同的緩存ke YS。

+0

在Rails 4.x中您可能還需要做`緩存( 「新聞」,skip_digest :true)`。 – Kris 2017-09-25 13:01:58

4

嘗試ActionController::Base.new.expire_fragment(:key => "news")

沒有時間更換expire_fragment(:key => "news")解釋,但它爲我工作。

+0

希望我能對此更加滿意......像魅力一樣工作! – concept47 2010-09-07 10:51:20

+0

確保你把--- cache_sweeper:whatever_sweeper ---放在你的application_controller.rb中,以便上面的工作。 – concept47 2010-09-07 11:18:39

1

正確的方式做,這就是:

cache :news do 

    ... 
end 

,然後在機:

expire_fragment :news