假设我在控制器中有这个:
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/)
但没有一个到期我的行动。不知道是否有可能使这样的匹配动作失效?
答案 0 :(得分:1)
根据Caching docs的评论,您可以添加:expires_in
选项:
caches_action :my_action, :expires_in => 1.hour,
:cache_path => Proc.new { |c| "my_action##{c.params}" }
此外,正如您所指出的,您的网址采用/w/:some_id/:additional_params
格式,因此网址中没有my_action
。因此,您不会将任何对象与正则表达式/my_action/
匹配。
这可能会使缓存失效:
expire_fragment(%r{/w/\d+/})