NAME Dancer::Plugin::Cache::CHI - Dancer plugin to cache response content (and anything else) VERSION version 1.2.0 SYNOPSIS In your configuration: plugins: 'Cache::CHI': driver: Memory global: 1 In your application: use Dancer ':syntax'; use Dancer::Plugin::Cache::CHI; # caching pages' response check_page_cache; get '/cache_me' => sub { cache_page template 'foo'; }; # using the helper functions get '/clear' => sub { cache_clear; }; put '/stash' => sub { cache_set secret_stash => request->body; }; get '/stash' => sub { return cache_get 'secret_stash'; }; del '/stash' => { return cache_remove 'secret_stash'; }; # using the cache directly get '/something' => sub { my $thingy = cache->compute( 'thingy', sub { compute_thingy() } ); return template 'foo' => { thingy => $thingy }; }; DESCRIPTION This plugin provides Dancer with an interface to a CHI cache. Also, it includes a mechanism to easily cache the response of routes. CONFIGURATION Unrecognized configuration elements are passed directly to the CHI object's constructor. For example, the configuration given in the "SYNOPSIS" will create a cache object equivalent to $cache = CHI->new( driver => 'Memory', global => 1, ); honor_no_cache If the parameter '"honor_no_cache"' is set to true, a request with the http header '"Cache-Control"' or '"Pragma"' set to '*no-cache*' will ignore any content cached via '"cache_page"' and will have the page regenerated anew. KEYWORDS cache Returns the CHI cache object. check_page_cache If invoked, returns the cached response of a route, if available. The "path_info" attribute of the request is used as the key for the route, so the same route requested with different parameters will yield the same cached content. Caveat emptor. cache_page($content, $expiration) Caches the *$content* to be served to subsequent requests. The headers and http status of the response are also cached. The *$expiration* parameter is optional. cache_page_key Returns the cache key used by '"cache_page"'. Defaults to to the request's *path_info*, but can be modified via *cache_page_key_generator*. cache_page_key_generator( \&sub ) Sets the function that generates the cache key for *cache_page*. For example, to have the key contains both information about the request's hostname and path_info (useful to deal with multi-machine applications): cache_page_key_generator sub { return join ':", request()->host, request()->path_info; }; cache_set, cache_get, cache_remove, cache_clear, cache_compute Shortcut to the cache's object methods. get '/cache/:attr/:value' => sub { # equivalent to cache->set( ... ); cache_set $params->{attr} => $params->{value}; }; See the CHI documentation for further info on these methods. HOOKS before_create_cache Called before the creation of the cache, which is lazily done upon its first use. Useful, for example, to change the cache's configuration at run time: use Sys::Hostname; # set the namespace to the current hostname hook before_create_cache => sub { config->{plugins}{'Cache::CHI'}{namespace} = hostname; }; SEE ALSO Dancer Web Framework - Dancer CHI Dancer::Plugin::Memcached - plugin that heavily inspired this one. AUTHOR Yanick Champoux COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Yanick Champoux. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.