WWW::Mechanize::Cached - Cache response to be polite
version 1.38
use WWW::Mechanize::Cached; my $cacher = WWW::Mechanize::Cached->new; $cacher->get( $url ); # or, with your own Cache object use CHI; use WWW::Mechanize::Cached; my $cache = CHI->new( driver => 'File', root_dir => '/tmp/mech-example' ); my $mech = WWW::Mechanize::Cached->new( cache => $cache ); $mech->get("http://www.google.com");
Uses the Cache::Cache hierarchy to implement a caching Mech. This lets one perform repeated requests without hammering a server impolitely.
Repository: http://github.com/oalders/www-mechanize-cached/tree/master
Behaves like, and calls, WWW::Mechanize's new method. Any params, other than those explicitly listed here are passed directly to WWW::Mechanize's constructor.
new
You may pass in a cache => $cache_object if you wish. The $cache_object must have get() and set() methods like the Cache::Cache family.
cache => $cache_object
get()
set()
Cache::Cache
The default Cache object is set up with the following params:
my $cache_params = { default_expires_in => "1d", namespace => 'www-mechanize-cached', }; $cache = Cache::FileCache->new( $cache_params );
This should be fine if you only want to use a disk-based cache, you only want to cache results for 1 day and you're not in a shared hosting environment. If any of this presents a problem for you, you should pass in your own Cache object. These defaults will remain unchanged in order to maintain backwards compatibility.
For example, you may want to try something like this:
use WWW::Mechanize::Cached; use CHI; my $cache = CHI->new( driver => 'File', root_dir => '/tmp/mech-example' ); my $mech = WWW::Mechanize::Cached->new( cache => $cache ); $mech->get("http://www.google.com");
Most methods are provided by WWW::Mechanize. See that module's documentation for details.
Requires an caching object which has a get() and a set() method. Using the CHI module to create your cache is the recommended way. See new() for examples.
Returns true if the current page is from the cache, or false if not. If it returns undef, then you don't have any current request.
undef
As of v1.36 positive caching is enabled by default. Up to this point, this module had employed a negative cache, which means it cached 404 responses, temporary redirects etc. In most cases, this is not what you want, so the default behaviour now better reflects this. You can revert to the negative cache quite easily:
# cache everything (404s, all 300s etc) $mech->positive_cache( 0 );
Allow the referring URL to be used when creating the cache key. This is off by default. In almost all cases, you will not want to enable this, but it is available to you for reasons of backwards compatibility and giving you enough rope to hang yourself.
Previous to v1.36 the following was in the "BUGS AND LIMITATIONS" section:
It may sometimes seem as if it's not caching something. And this may well be true. It uses the HTTP request, in string form, as the key to the cache entries, so any minor changes will result in a different key. This is most noticable when following links as L<WWW::Mechanize> adds a C<Referer> header.
See RT #56757 for a detailed example of the bugs this functionality can trigger.
Iain Truskett for writing this in the first place.
You can find documentation for this module with the perldoc command.
perldoc WWW::Mechanize::Cached
You can also look for information at:
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/WWW-Mechanize-Cached
CPAN Ratings
http://cpanratings.perl.org/d/WWW-Mechanize-Cached
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Mechanize-Cached
Search CPAN
http://search.cpan.org/dist/WWW-Mechanize-Cached
WWW::Mechanize.
Iain Truskett (original author)
Andy Lester <petdance@cpan.org> (2004 - July 2009)
Olaf Alders <olaf@wundercounter.com> (current maintainer)
This software is copyright (c) 2010 by Iain Truskett and Andy Lester.
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 WWW::Mechanize::Cached, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WWW::Mechanize::Cached
CPAN shell
perl -MCPAN -e shell install WWW::Mechanize::Cached
For more information on module installation, please visit the detailed CPAN module installation guide.