Alex Vandiver

NAME

Jifty::CAS - Jifty's Content-Addressable Storage facility

SYNOPSIS

  my $key = Jifty::CAS->publish('js' => 'all', $content,
                      { hash_with => $content, # default behaviour
                        content_type => 'application/x-javascript',
                      });

  $ie_key = Jifty::CAS->publish('js' => 'ie-only', $ie_content,
                      { hash_with => $ie_content,
                        content_type => 'application/x-javascript',
                      });

  $key = Jifty::CAS->key('js', 'ie-only');
  my $blob = Jifty::CAS->retrieve('js', $key);

DESCRIPTION

Provides an in-memory md5-addressed content store. Content is stored under a "domain", and can be addressed using wither the "key", which is an md5 sum, or the "name", which simply stores the most recent key provided with that name.

BACKENDS

The default data store is a per-process, in-memory store via Jifty::CAS::Store::Memory. Jifty::CAS::Store::Memcached is also available, and has the benefits of sharing the cache across all instances of a Jifty app using Jifty::CAS. The memcached store is limited to objects less than 1MB in size, however. Jifty::CAS::Store::LocalFile provides a durable store, which is well-suited for sharing the cache across instances and restarts. Because of its speed, however, Jifty::CAS::Store::Nested is suggested to provide a layered cache, most probably with fast memory-based cache in front of a durable, file-based cache.

METHODS

publish DOMAIN NAME CONTENT METADATA

Publishes the given CONTENT at the address DOMAIN and NAME. METADATA is an arbitrary hash; see Jifty::CAS::Blob for more. Returns the key on success, or undef on failure.

key DOMAIN NAME

Returns the most recent key for the given pair of DOMAIN and NAME, or undef if none such exists.

retrieve DOMAIN KEY

Returns a Jifty::CAS::Blob for the given pair of DOMAIN and KEY, or undef if none such exists.

uri DOMAIN NAME

Returns a URL where the given DOMAIN and NAME can be accessed.

serve DOMAIN ARGUMENT ENV

Serves a plack request in ENV, given a DOMAIN and an ARGUMENT, which may wither be a key or a name. This method is usually only called by "wrap", which calls it as appropriate for all requests under /__jifty/cas/.

backend [DOMAIN]

Returns the Jifty::CAS::Store which backs the given DOMAIN. If DOMAIN is not specified, returns the default backing store.

config

Returns the CAS configuration, as specified in the framework's configuration.

setup

Configures the CAS for use.

wrap APP

Given a PSGI application, wraps it to handle /__jifty/cas/ requests by calling the appropriate "serve" method.