【问题标题】:Rails 3 Expire complex actionsRails 3 过期复杂动作
【发布时间】:2011-05-19 18:42:08
【问题描述】:

假设我的控制器中有这个:

caches_action :my_action, :cache_path => Proc.new { |c| "my_action##{c.params}" }

网址是这样的:

/w/:some_id/:additional_params

缓存工作正常,但我找不到如何使其过期。

我试过了:

expire_action(:controller => '/my_controller', :action => 'my_action')

expire_fragment(/my_action/)

store = ActionController::Base.cache_store
store.delete_matched(/my_action/)

但是我的操作没有一个过期。知道是否可以使这样的匹配操作过期?

【问题讨论】:

    标签: ruby-on-rails memcached


    【解决方案1】:

    您可以从 Caching docs 的 cmets 添加 :expires_in 选项:

    caches_action :my_action, :expires_in => 1.hour,
      :cache_path => Proc.new { |c| "my_action##{c.params}" }
    

    另外,正如您所指出的,您的 URL 格式为 /w/:some_id/:additional_params,因此 URL 中没有 my_action。所以你不会用正则表达式/my_action/匹配任何对象。

    这可能会使缓存过期:

    expire_fragment(%r{/w/\d+/})
    

    【讨论】:

    • 对,但是cache_path中有“my_action”。我会试试你的建议。
    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多