AnyEvent-CacheDNS
view release on metacpan or search on metacpan
lib/AnyEvent/CacheDNS.pm view on Meta::CPAN
# If we have the value cached then we serve it from there
my $cache = $self->{_cache}{$qtype} ||= {};
if (exists $cache->{$qname}) {
my $response = $cache->{$qname};
$cb->($response ? ($response) : ());
return;
}
# Perform a request and cache the value
$self->SUPER::resolve(
$qname,
$qtype,
%opt,
sub{
# Note that it could be possible that multiple DNS request are done
# for a new qname. For instance if an application is doing multiple
# concurrent HTTP request to the same host then there will be at
# least one DNS request per HTTP request. That's why we only cache
# the results of the first DNS request that's successful.
$cache->{$qname} ||= @_ ? $_[0] : undef;
( run in 1.031 second using v1.01-cache-2.11-cpan-49f99fa48dc )