Rack::Cache is suitable as a quick drop-in component to enable HTTP caching
for Rack-based applications that produce freshness (Expires
,
Cache-Control
) and/or validation (Last-Modified
, ETag
) information.
- Standards-based (see RFC 2616 / Section 13).
- Freshness/expiration based caching
- Validation
- Vary support
- Portable: 100% Ruby / works with any Rack-enabled framework.
- Disk, memcached, and heap memory storage backends.
News
- Rack::Cache 1.0 was released on December 24, 2010. See the
CHANGES
file for details. - How to use Rack::Cache with Rails 2.3 – it’s really easy.
- RailsLab’s Advanced HTTP Caching Screencast is a really great review of HTTP caching concepts and shows how to use Rack::Cache with Rails.
Installation
$ sudo gem install rack-cache
Or, from a local working copy:
$ git clone git://github.com/rtomayko/rack-cache.git
$ rake package && sudo rake install
Basic Usage
Rack::Cache is implemented as a piece of Rack middleware and can be used
with any Rack-based application. If your application includes a rackup
(.ru
) file or uses Rack::Builder to construct the application pipeline,
simply require
and use
as follows:
require 'rack/cache'
use Rack::Cache,
:verbose => true,
:metastore => 'file:/var/cache/rack/meta',
:entitystore => 'file:/var/cache/rack/body'
run app
Assuming you’ve designed your backend application to take advantage of HTTP’s caching features, no further code or configuration is required for basic caching.
More
Configuration Options – how to set cache options.
Cache Storage Documentation – detailed information on the various storage implementations available in Rack::Cache and how to choose the one that’s best for your application.
Things Caches Do – an illustrated guide to how HTTP gateway caches work with pointers to other useful resources on HTTP caching.
GitHub Repository – get your fork on.
Mailing List – for hackers and users (
rack-cache@groups.google.com
).FAQ – Frequently Asked Questions about Rack::Cache.
RDoc API Documentation – Mostly worthless if you just want to use Rack::Cache in your application but mildly insightful if you’d like to get a feel for how the system has been put together; I recommend reading the source.
See Also
The overall design of Rack::Cache is based largely on the work of the internet standards community. The following resources provide a good starting point for exploring the basic concepts of HTTP caching:
Mark Nottingham’s Caching Tutorial, especially the short section on How Web Caches Work
Joe Gregorio’s Doing HTTP Caching Right
RFC 2616, especially Section 13, “Caching in HTTP”
Rack::Cache takes (liberally) various concepts from Varnish and Django’s cache framework.
License
Rack::Cache is Copyright © 2008 by Ryan Tomayko and is provided under the MIT license