Caching is a cheap way of speeding up slow applications by keeping the result of calculations, renderings, and database calls around for subsequent requests. Action Controller affords you three approaches in varying levels of granularity: Page, Action, Fragment.

You can read more about each approach and the sweeping assistance by clicking the modules below.

Note: To turn off all caching and sweeping, set Base.perform_caching = false.

Caching stores

All the caching stores from ActiveSupport::Cache is available to be used as backends for Action Controller caching. This setting only affects action and fragment caching as page caching is always written to disk.

Configuration examples (MemoryStore is the default):

  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")
Methods
Included Modules
Classes and Modules
Module ActionController::Caching::Actions
Module ActionController::Caching::Fragments
Module ActionController::Caching::Pages
Module ActionController::Caching::Sweeping
Public Class methods
cache_configured?()
    # File vendor/rails/actionpack/lib/action_controller/caching.rb, line 49
49:         def self.cache_configured?
50:           perform_caching && cache_store
51:         end
cache_store=(store_option)

Defines the storage option for cached fragments

    # File vendor/rails/actionpack/lib/action_controller/caching.rb, line 39
39:         def self.cache_store=(store_option)
40:           @@cache_store = ActiveSupport::Cache.lookup_store(store_option)
41:         end
Protected Instance methods
cache(key, options = {}) {|| ...}

Convenience accessor

    # File vendor/rails/actionpack/lib/action_controller/caching.rb, line 57
57:       def cache(key, options = {}, &block)
58:         if cache_configured?
59:           cache_store.fetch(ActiveSupport::Cache.expand_cache_key(key, :controller), options, &block)
60:         else
61:           yield
62:         end
63:       end