LWP::UserAgent::Role::CHICaching - A role to allow LWP::UserAgent to cache with CHI
Compose it into a class, e.g.
package LWP::UserAgent::MyCacher; use Moo; extends 'LWP::UserAgent'; with 'LWP::UserAgent::Role::CHICaching', 'LWP::UserAgent::Role::CHICaching::SimpleKeyGen', 'LWP::UserAgent::Role::CHICaching::SimpleMungeResponse';
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.
cache
Used to set the CHI object to be used as cache in the constructor.
CHI
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.
key
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.
freshness_lifetime
Cache-Control
Expires
The following are required by this role, but implemented elsewhere. See LWP::UserAgent::Role::CHICaching::SimpleKeyGen and LWP::UserAgent::Role::CHICaching::SimpleMungeResponse for further explanations.
clear_key
The key to use for a response.
cache_vary($response)
A method that returns true if the response may be cached even if it contains a Vary header, false otherwise. The HTTP::Response object will be passed to it as a parameter.
Vary
cache_set($response, $expires_in)
A method that takes the HTTP::Response from the client and an expires time in seconds and set the actual cache.
finalize($cached)
A method that takes the cached entry as an argument, and will return a HTTP::Response to return to the client.
Will only cache GET requests, and only successful responses.
GET
The module does not validate and does not serve stale responses, even when it would be allowed to do so. It nevertheless does most of RFC7234.
Please report any bugs to https://github.com/kjetilk/p5-lwp-useragent-chicaching/issues.
Kjetil Kjernsmo <kjetilk@cpan.org>.
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.
This software is copyright (c) 2015, 2016 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.
To install LWP::UserAgent::CHICaching, copy and paste the appropriate command in to your terminal.
cpanm
cpanm LWP::UserAgent::CHICaching
CPAN shell
perl -MCPAN -e shell install LWP::UserAgent::CHICaching
For more information on module installation, please visit the detailed CPAN module installation guide.