module

ActionController::Caching

# Action Controller Caching

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

Note: To turn off all caching provided by Action Controller, 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 (FileStore 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')

Included modules

  • AbstractController::Caching

Files

  • actionpack/lib/action_controller/caching.rb

3Notes

Using sweepers in script/runner

yonosoytu · Aug 17, 20087 thanks

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
ActiveRecord::Base.instantiate_observers

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

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

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.).

Rails 2.1 caching internals

mutru · Jul 2, 20086 thanks

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

http://www.thewebfellas.com/blog/2008/6/9/rails-2-1-now-with-better-integrated-caching

Video tutorial

Soleone · Apr 29, 2009

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:

http://railslab.newrelic.com/scaling-rails