Plack-Middleware-Cached
view release on metacpan or search on metacpan
# Change file for Plack::Middleware::Cached
0.15 2014-01-02
- fixed test (thanks to Piotr Roszatycki)
0.14 2013-12-28
- support streaming API (thanks to Piotr Roszatycki)
0.13 2012-09-04
0.12 2011-07-18
0.11 2011-06-28
- First public version at CPAN
MANIFEST
META.yml
Makefile.PL
README
cpanfile
lib/Plack/Middleware/Cached.pm
t/00_compile.t
t/10_cache.t
t/20_alien.t
t/30_debug_mode.t
t/40_streaming.t
t/author-critic.t
t/mock-cache
lib/Plack/Middleware/Cached.pm view on Meta::CPAN
$env->{$key} = $value;
}
}
$env->{'plack.middleware.cached'} = 1;
return $response;
}
# pass through and cache afterwards
my $response = $self->app_code->($env);
# streaming response
if (ref $response eq 'CODE') {
$response = $self->response_cb($response, sub {
my ($ret) = @_;
my $seen;
my $body = '';
return sub {
my ($chunk) = @_;
if ($seen++ and not defined $chunk) {
my $new_response = [ $ret->[0], $ret->[1], [ $body ] ];
$self->cache_response($key, $new_response, $env);
lib/Plack/Middleware/Cached.pm view on Meta::CPAN
if ($env->{'plack.middleware.cached') {
...
}
return $res;
};
};
enable 'Cached', cache => $cache;
$app;
},
Caching delayed/streaming responses is supported as well.
=head1 CONFIGURATION
=over 4
=item cache
An cache object, which supports the methods C<< get( $key ) >> to retrieve
an object from cache and C<< set( $key, $object [, @options ] ) >> to store
an object in cache, possibly adjusted by some options. See L<CHI> for a class
t/40_streaming.t view on Meta::CPAN
test_psgi $capp->($app_delayed->($app_static)), sub {
my $cb = shift;
my $res = $cb->(GET "/b");
is $res->code, 200;
is $res->content, 2;
} foreach (1..2);
my $app_streaming = sub {
return sub {
my ($responder) = @_;
my $writer = $responder->(
[ 200, [ 'Content-Type' => 'text/plain' ] ]
);
$writer->write($counter);
$writer->write($counter);
$writer->close;
return;
};
};
test_psgi $capp->($app_streaming), sub {
my $cb = shift;
my $res = $cb->(GET "/c");
is $res->code, 200;
is $res->content, 33;
} foreach (1..2);
done_testing;
( run in 0.259 second using v1.01-cache-2.11-cpan-4d50c553e7e )