rails expiring cache

时间:2010-06-15 07:28:58

标签: ruby-on-rails

我使用迁移将一些产品数据输入到表中。当我更新,添加,删除此表中的产品时,我需要使页面和片段缓存失效。我为此创造了一个扫地机。

class ProductSweeper <  ActionController::Caching::Sweeper
  observe Product

  def after_create
    expire_cache
  end

  def after_save
    expire_cache
  end

  def after_update
    expire_cache
  end

  def after_destroy
    expire_cache
  end

  private
  def expire_cache
    expire_page(:controller => 'ProductsController', :action => 'index')
    expire_fragment 'listed_products'
  end
end

然后在脚本/控制台中更新产品名称并保存。当我在浏览器中重新加载我的应用程序时,它仍然给我一个缓存命中。

缓存片段命中:views / listed_products(0.2ms)

有人可以告诉我如何使此缓存失效。我不会通过控制器操作添加,更新,删除产品。

感谢, 灰

更多信息:

<div>
 <% cache 'listed_products' do %>
  <%= render :partial => "/layouts/product", :collection => Product.listed_products  %>
 <% end %>
</div>

这是部分。

<ul class="vlist">
 <li>
  <div class="Flt Hday">
   <%=h product.name %>
  </div>
  <div class="Frt Hday">
   <%=h product.cal_date.strftime("%b %d, %Y") %>
  </div>
 </li>
</ul>

0 个答案:

没有答案