Caching is a cheap way of speeding up slow applications by keeping the result of calculations, renderings, and database calls around for subsequent requests.

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

Note: To turn off all caching, set

config.action_controller.perform_caching = false.

Caching stores

All the caching stores from ActiveSupport::Cache are available to be used as backends for Action Controller caching.

Configuration examples (MemoryStore is the default):

config.action_controller.cache_store = :memory_store
config.action_controller.cache_store = :file_store, '/path/to/cache/directory'
config.action_controller.cache_store = :mem_cache_store, 'localhost'
config.action_controller.cache_store = :mem_cache_store, Memcached::Rails.new('localhost:11211')
config.action_controller.cache_store = MyOwnStore.new('parameter')
Show files where this module is defined (2 files)
Register or log in to add new notes.
August 17, 2008
7 thanks

Using sweepers in script/runner

If you need to use some of your sweepers in a script/runner script or some rake task you can use this snipped:

require 'action_controller/test_process'

sweepers = [ProductSweeper, UserSweeper]

ActiveRecord::Base.observers = sweepers

controller = ActionController::Base.new
controller.request = ActionController::TestRequest.new
controller.instance_eval do
  @url = ActionController::UrlRewriter.new(request, {})

sweepers.each do |sweeper|
  sweeper.instance.controller = controller

Your script will fire the ActiveRecord callbacks defined in that sweepers and you can use expire_cache, expire_fragment and also the routing helpers you have defined (hash_for_user_path, hash_for_product_path, etc.).

July 2, 2008
6 thanks

Rails 2.1 caching internals

Rails 2.1 caching features are pretty much undocumented. Rob Anderton has documented some internal stuff here:


April 30, 2009
0 thanks

Video tutorial

If you want to get up to speed with Rails’ caching and haven’t seen it already, definitely check out this video series on Scaling Rails: