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.
- Configuration language for advanced caching policies.
- Disk, memcached, and heap memory storage backends.
Status
Rack::Cache is a young and experimental project that is likely to change substantially and may not be wholly functional, consistent, fast, or correct. The current focus is on reaching basic compliance with RFC 2616 and providing good documentation.
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 Language Documentation – how to customize cache policy using the simple event-based configuration system.
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