Принцип такой: Запрос проверяется с кэшем. Если найден, то вернет ответ с кеша, иначе выполнит запрос. Проверяет коды ответов HTTP:
304 вернуть с кэша
200 выполнить запрос
500 выполнить запрос или что то не так...
Пример:
my $chi_cache = CHI->new(
driver => 'File',
root_dir => '/tmp/HTTP_Caching',
file_extension => '.cache',
l1_cache => {
driver => 'Memory',
global => 1,
max_size => 1024*1024
}
);
my $ua = LWP::UserAgent->new();
my $http_caching = HTTP::Caching->new(
cache => $chi_cache,
cache_type => 'private',
forwarder => sub { return $ua->request(shift) }
);
my $rqst = HTTP::Request->new( GET => '
http://example.com' );
my $resp = $http_caching->make_request( $rqst );