The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package
    TestApp;

use strict;
use warnings;

use Dancer ':syntax';
use Dancer::Plugin::Cache::CHI;

set plugins => {
    'Cache::CHI' => { driver => 'Memory', global => 1, expires_in => '1 min' },
};

get '/set/:attribute/:value' => sub {
    cache_set params->{attribute} => params->{value};
};

get '/get/:attribute' => sub {
    return cache_get params->{attribute};
};

my $counter;
get '/cached' => sub {
    return cache_page ++$counter;
};

get '/counter' => sub { $counter };

get '/check_page_cache' => sub {
    check_page_cache;
};

get '/clear' => sub {
    cache_clear;
};

put '/stash' => sub {
    return cache_set secret_stash => request->body;
};

get '/stash' => sub {
    return cache_get 'secret_stash';
};

del '/stash' => sub {
    return cache_remove 'secret_stash';
};

my $computed = 'aaa';
get '/compute' => sub {
    return cache_compute compute => sub { ++$computed };
};

my $cached_quick;
get '/expire_quick' => sub {
    return cache_page ++$cached_quick, 2;
};

my $headers;
hook before => sub {
    header 'X-Foo' => ++$headers;
};

get '/clear_headers' => sub { $headers = 0 };
get '/headers' => sub {
    cache_page 'gonzo';
};



1;