此一个已我难住了。

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

 - 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

我想的问题可能是红宝石或轨道是有一个很难确定密钥是究竟等高速缓存的方法和expire_fragment正在生成两个不同的缓存键。

其他提示

尝试用expire_fragment(:key => "news")替换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

我发现这是在我的项目到期片段的更简单的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top