Rails 3 file_store缓存,删除过期的片段

时间:2014-01-20 13:11:45

标签: ruby-on-rails ruby-on-rails-3 caching

我有一个在Unicorn上运行的Rails 3.2.11应用程序,并且设置用于将file_store缓存到项目外部的特定文件夹。 我也使用gem rails/cache_digests进行自动过期。 在某个页面中,我正在进行片段缓存而不设置时间到期。

当片段过期时,我看到在缓存文件夹中创建的新片段,但我也看到了过期的片段。如何在没有手动操作的情况下通过缓存管理机制从缓存文件夹中删除它?如果它没有被删除,那么缓存文件夹将会被垃圾,未使用的过期片段膨胀。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此cleanup函数删除所有过期的片段。您可以设置脚本以定期运行此命令。

答案 1 :(得分:-2)

您可以使用ActionController::Caching::Sweeping使片段缓存失效。

见下面的例子:

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

  #expire fragment after model update
  def after_save
   expire_fragment('all_available_products')   
  end

  #expire different cache after controller method modifying state is called.
  def after_products_update_some_state
    expire_action(:controller => 'products', :action => 'index') 
  end

  #can also use before:
  def before_products_update_some_state
    #do something before. 
  end
end

url也可以帮助您