Cache-Adaptive-ByLoad
view release on metacpan or search on metacpan
lib/Cache/Adaptive/ByLoad.pm view on Meta::CPAN
};
} unless $load_avg;
eval {
require BSD::getloadavg;
$load_avg = sub {
my @la = BSD::getloadavg::getloadavg();
$la[0];
};
} unless $load_avg;
die "Cache::Adaptive::ByLoad requires either of the following: Sys::Statistics::Linux::LoadAVG, BSD::Sysctl, BSD::Getloadavg.\n" unless $load_avg;
*_load_avg = $load_avg;
};
sub new {
my ($class, $opts) = @_;
my $self = Cache::Adaptive::new($class, {
%DEFAULTS,
$opts ? %$opts : (),
});
$self->check_load(sub { $self->_check_load(@_); });
$self;
}
sub _check_load {
my ($self, $entry, $params) = @_;
my $l = _load_avg() * $self->target_loadavg;
int($params->{load} * $self->load_factor * $l <= 1 ? $l : $l ** 2) - 1;
}
1;
=head1 NAME
Cache::Adaptive::ByLoad - Automatically adjusts the cache lifetime by load
=head1 SYNOPSIS
use Cache::Adaptive::ByLoad;
use Cache::FileCache;
my $cache = Cache::Adaptive::ByLoad->new({
backend => Cache::FileCache->new({
namespace => 'cache_adaptive',
}),
});
...
print "Content-Type: text/html\n\n";
print $cache->access({
key => $uri,
builder => sub {
# your HTML build logic here
$html;
},
});
=head1 DESCRIPTION
C<Cache::Adaptive::ByLoad> is a subclass of L<Cache::Adaptive>. The module adjusts cache lifetime by two factors; the load average of the platform and the percentage of the total time spent by the builder. In other words, the module tries to utiliz...
=head1 METHODS
=head2 new
Constructor. Takes a hashref of properties.
=head1 PROPERTIES
C<Cache::Adaptive::ByLoad> defines two properties in addition to the properties defined by L<Cache::Adaptive>.
=head2 load_factor
=head2 target_loadavg
=head1 SEE ALSO
L<Cache::Adaptive>
=head1 AUTHOR
Copyright (c) 2007 Cybozu Labs, Inc. All rights reserved.
written by Kazuho Oku E<lt>kazuhooku@gmail.comE<gt>
=head1 LICENSE
This program is free software; you can redistribute it and/or modify it under t
he same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
=cut
( run in 0.581 second using v1.01-cache-2.11-cpan-39bf76dae61 )