I have index actions that take filters. So, I created a cache_path for my action caching:
caches_action :index, :layout => false, :cache_path => Proc.new { |c| "#{c.params[:league_id]}/index/#{c.params.values.sort.to_s}" }
Which means that all my caches end up in a nice tree of 'views/[league name]'. But, how to expire a whole part of the cache tree when there could be dozens of nodes as people could be searching on last names too.
What I found was that expire_action was NOT the way to go. expire_fragment lets you pass in a regular expression. Now in my sweeper I have this:
def expire_cache_for(player)
expire_fragment(%r{views/#{player.league.to_param}.*})
end
Which will expire all the cached code for the player's league.
No comments:
Post a Comment