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")
Module ActionController::Caching::Fragments
Module ActionController::Caching::Pages
Module ActionController::Caching::Sweeping
[ show source ]
# File actionpack/lib/action_controller/caching.rb, line 50 50: def self.cache_configured? 51: perform_caching && cache_store 52: end
Defines the storage option for cached fragments
[ show source ]
# File actionpack/lib/action_controller/caching.rb, line 40 40: def self.cache_store=(store_option) 41: @@cache_store = ActiveSupport::Cache.lookup_store(store_option) 42: end
Convenience accessor
[ show source ]
# File actionpack/lib/action_controller/caching.rb, line 58 58: def cache(key, options = {}, &block) 59: if cache_configured? 60: cache_store.fetch(ActiveSupport::Cache.expand_cache_key(key, :controller), options, &block) 61: else 62: yield 63: end 64: end