= http_caching plugin for Rails
Allows your Rails application to take advantage of the caching mechanisms built
into HTTP 1.1 (i.e., 304 Not Modified return code). Inspired by a Rails cookbook
entry (http://manuals.rubyonrails.com/read/chapter/62).
== Installation
If your project is source-controlled by Subversion (which it should be, really),
the easiest way to install this is via Rails' plugin script:
./script/plugin install -x http://svn.codahale.com/http_caching
If you're not using Subversion, or if you don't want it adding
svn:externals in your project, remove the -x switch:
./script/plugin install http://svn.codahale.com/http_caching
== Usage
An example using send_data:
def get_orders
@photo = Photo.find(params[:id])
if_cached_before @photo.updated_at do
send_data @photo.data, :type => @photo.mime_type, :disposition => 'inline'
end
end
Another example, this time using a simple RHTML view:
def get_user_profile
@user = User.find(params[:id])
render_if_cached_before @user.updated_at
end
A slightly more complicated RHTML example:
def get_orders
render_if_cached_before Order.maximum(:updated_at), :layout => 'orders_feed', :action => 'all_orders'
end
Or you can keep frequent refreshers from swamping your server:
def shiny_object
if_cached_before 10.minutes.ago do
@shiny_object = ShinyObject.complicated_database_call(:woo => :hah)
end
end
You get the idea.
== Resources
=== Subversion
* http://svn.codahale.com/http_caching
=== Blog
* http://blog.codahale.com
== Credits
Written by Coda Hale . Released under the MIT License for
great justice.