Rack::Cache includes a configuration system that can be used to specify fairly sophisticated cache policy on a global or per-request basis.
Setting Cache Options
Cache options can be set when the Rack::Cache object is created,
or by setting a
rack-cache.<option> variable in Rack's
When the Rack::Cache object is instantiated:
use Rack::Cache, :verbose => true, :metastore => 'memcached://localhost:11211/', :entitystore => 'file:/var/cache/rack'
Using Rack's Environment:
env.merge!( 'rack-cache.verbose' => true, 'rack-cache.metastore' => 'memcached://localhost:11211/', 'rack-cache.entitystore' => 'file:/var/cache/rack' )
Cache Option Reference
Use the following options to customize Rack::Cache:
Boolean specifying whether verbose trace logging is enabled. This option is
currently enabled (
true) by default but is likely to be disabled (
a future release. All log output is written to the
rack.errors stream, which
is typically set to
error methods can be used within the
configuration context to write messages to the errors stream.
An integer specifying the number of seconds a cached object should be considered
"fresh" when no explicit freshness information is provided in a response.
Expires response headers always override this
default_ttl option defaults to
0, meaning responses without
explicit freshness information are considered immediately "stale" and will not
be served from cache without validation.
A URI specifying the MetaStore implementation used to store request/response meta information. See the Rack::Cache Storage Documentation for detailed information on different storage implementations.
If no metastore is specified, the
heap:/ store is assumed. This implementation
has significant draw-backs so explicit configuration is recommended.
A URI specifying the EntityStore implementation used to store response bodies. See the Rack::Cache Storage Documentation for detailed information on different storage implementations.
If no entitystore is specified, the
heap:/ store is assumed. This
implementation has significant draw-backs so explicit configuration is
An array of request header names that cause the response to be treated with
private cache control semantics. The default value is
If any of these headers are present in the request, the response is considered
private and will not be cached unless the response is explicitly marked public
TODO: Document custom cache keys