NAME

Dancer::Plugin::Cache::CHI - Dancer plugin to cache response content (and anything else)

VERSION

version 1.1.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

The plugin's configuration is 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, );

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 $expiration parameter is optional.

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.

SEE ALSO

Dancer Web Framework - Dancer

CHI

Dancer::Plugin::Memcached - plugin that heavily inspired this one.

AUTHOR

Yanick Champoux <yanick@cpan.org>

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.