使用自定义cache_path过期操作缓存



我的应用程序中操作缓存过期了。

这是我的控制器:

class ToplistsController < ApplicationController
  caches_action :songs, cache_path: :custom_cache_path.to_proc
  def custom_cache_path
    "#{params[:when]}-#{params[:what]}-#{params[:controller]}-#{params[:action]}"
  end
  def songs
    # ...
  end  
end

我需要能够重置自定义缓存路径,但我不知道如何。

我已经尝试过使用这种技术,但没有成功。我的缓存引擎dali似乎不支持regexp匹配器。

当我尝试使用这个代码时,我得到这个错误:

expire_fragment(/songs/)

ActiveSupport::Cache::DalliStore does not support delete_matched

我试着用这行代码来调试,但是它被忽略了。

before_filter only: [:songs] 
  expire_fragment(custom_cache_path)
end

我正在使用Rails 3.1.0。

before_filter块由于动作缓存而被忽略。
解决方案是使用片段缓存。

# Controller
class ToplistsController < ApplicationController
  helper_method :custom_cache_path
  before_filter only: [:songs]
    if params[:reset_cache]
      expire_fragment(custom_cache_path)
    end
  end
  def custom_cache_path
    "#{params[:when]}-#{params[:what]}-#{params[:controller]}-#{params[:action]}"
  end
  def songs
    # ...
  end  
end
# View
<%= cache custom_cache_path do %>
  Content that should be cached
<% end %>

您可能还想在这里查看解决方案。使用这种方法,您可以使用额外的参数来终止操作。

相关内容

  • 没有找到相关文章

最新更新