caches_page :public_action expire_page :action => 'public_action' caches_action :premium_content caches_action :premium_content, :layout => false # don't cache the layout expire_action :action => 'premium_content', :id => 2 cache 'recent_products' expire_fragment 'recent_products' # Configuration: config.action_controller.perform_caching = true
class ArticleSweeper < ActionController::Caching::Sweeper observe Article def after_create(article) expire_page(:controller => "content", :action => 'public_content') end def after_update(article) expire_action(:controller => "content", :action => "premium_content", :id => article_id) end def after_destroy(article) ... end end
class ContentController < ApplicationController cache_sweeper :article_sweeper, :only => [ :create_article, :update_article, :delete_article ] end
ActionController::Base.cache_store = :memory_store ActionController::Base.cache_store = :file_store, "/path/to/cache/directory" ActionController::Base.cache_store = :drb_store, "druby://localhost:9192" ActionController::Base.cache_store = :mem_cache_store, "localhost" ActionController::Base.cache_store = MyOwnStore.new("parameter")
def show @article = Article.find(params[:id]) response.last_modified = @article.published_at.utc response.etag = @article if request.fresh?(response) head :not_modified else respond_to do |wants| # normal response processing end end end