Module: ActionController::Caching

Defined in:
lib/action_controller/caching.rb,
lib/action_controller/caching/pages.rb,
lib/action_controller/caching/actions.rb,
lib/action_controller/caching/sweeper.rb,
lib/action_controller/caching/sweeping.rb,
lib/action_controller/caching/fragments.rb

Overview

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 = :mem_cache_store, Memcached::Rails.new("localhost:11211")
ActionController::Base.cache_store = MyOwnStore.new("parameter")

Defined Under Namespace

Modules: Actions, Fragments, Pages, Sweeping Classes: Sweeper

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object

:nodoc:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/action_controller/caching.rb', line 34

def self.included(base) #:nodoc:
  base.class_eval do
    @@cache_store = nil
    cattr_reader :cache_store

    # Defines the storage option for cached fragments
    def self.cache_store=(store_option)
      @@cache_store = ActiveSupport::Cache.lookup_store(store_option)
    end

    include Pages, Actions, Fragments
    include Sweeping if defined?(ActiveRecord)

    @@perform_caching = true
    cattr_accessor :perform_caching

    def self.cache_configured?
      perform_caching && cache_store
    end
  end
end