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
我发现这是一种在我的项目中使片段过期的简单方法。