2011-11-14 59 views
0

我有一个应用程序,我想缓存页面的一些部分,我一直在阅读很多关于如何做到这一点。轨道上的红宝石3.1片段缓存

我明白,片段缓存是在我的项目上做到这一点的最好方法,但我找不到一个简单的例子来学习如何实现它。

我想使用片段缓存autoexpire

<% cache(:action => 'recent', :action_suffix => 'all_products') do %> 
     All available products: 
     <% Product.all.each do |p| %> 
     <%= link_to p.name, product_url(p) %> 
     <% end %> 
    <% end %> 

我在哪里设置autoexpire?周围的任何例子?我怎样才能做到这一点?

回答

2

在您的产品型号,你可以做这样的事情

after_save :expire_caches 
    after_destroy :expire_caches 

    # can't do this in a sweeper since there isn't a controller involved 
    def expire_caches 
     ActionController::Base.cache_store.delete_matched(%r{product\?for=\d+&fragment=products})