Rails – 片段缓存未到期

这个让我难过。

我有一个缓存片段的视图:

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

我有一个清扫车使用:

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

调用清扫器,因为我可以在控制台输出中看到“expire_home_cache”。

但片段没有更新……

有任何想法吗?

你可以试试这个:

  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很难确定密钥的确切位置,因此缓存方法和expire_fragment正在生成两个不同的缓存密钥。

尝试用ActionController::Base.new.expire_fragment(:key => "news")

没时间解释,但它对我有用。

正确的方法是:

 cache :news do ... end 

然后在你的清道夫:

 expire_fragment :news 

这并没有直接回答你的问题,但你有没有尝试过timed_fragment_cache插件?

http://github.com/tricycle/timed_fragment_cache/tree/master

我发现这是一种在我的项目中使片段过期的简单方法。