NAME

LWP::UserAgent::Role::CHICaching - A role to allow LWP::UserAgent to cache with CHI

SYNOPSIS

Compose it into a class, e.g.

package LWP::UserAgent::MyCacher;
use Moo;
extends 'LWP::UserAgent';
with 'LWP::UserAgent::Role::CHICaching';

DESCRIPTION

This is a role for creating caching user agents. When the client makes a request to the server, sometimes the response should be cached, so that no actual request has to be sent at all, or possibly just a request to validate the cache. HTTP 1.1 defines how to do this. This role makes it possible to use the very flexible CHI module to manage such a cache. See LWP::UserAgent::CHICaching for a finished class you can use.

Attributes and Methods

cache

Used to set the CHI object to be used as cache in the constructor.

key, clear_key

The key to use for a response. Defaults to the canonical URI of the request. May make sense to set differently in the future, but should probably be left alone for now.

request_uri

The Request-URI of the request. When set, it will clear the key, but should probably be left to be used internally for now.

request

Wrapping LWP::UserAgent's request method.

is_shared

A boolean value to set whether the cache can be shared. The default is that it is.

heuristics_opts

A hashref that is passed to the freshness_lifetime method of HTTP::Response, and used to determine the behaviour of the heuristic lifetime. By default, heuristic freshness lifetime is off, only standards-compliant freshness lifetime (i.e. based on the Cache-Control and Expires headers) are used.

LIMITATIONS

Will only cache GET requests, and only successful responses.

It does not consider the Vary field.

The module does not validate and does not serve stale responses, even when it would be allowed to do so.

BUGS

Please report any bugs to https://github.com/kjetilk/p5-lwp-useragent-chicaching/issues.

AUTHOR

Kjetil Kjernsmo <kjetilk@cpan.org>.

ACKNOWLEDGEMENTS

It was really nice looking at the code of LWP::UserAgent::WithCache, when I wrote this.

Thanks to Matt S. Trout for rewriting this to a Role.

COPYRIGHT AND LICENCE

This software is copyright (c) 2015 by Kjetil Kjernsmo.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.