LWP :: UserAgent设置所请求URL的ip,因此LWP不必进行dns查找

时间:2012-09-14 23:50:31

标签: perl dns ip lwp lwp-useragent

我正在使用LWP::UserAgent来请求大量页面内容。我已经知道我要求的网址的IP,所以我希望能够指定我请求的网址所在的IP地址,这样LWP就不必花时间进行dns查找。我查看了文档,但没有找到任何解决方案。有谁知道这样做的方法?谢谢!

2 个答案:

答案 0 :(得分:6)

嗯,您的系统应该已经缓存了DNS响应。您确定此优化会有所帮助吗?


选项1。

使用

http://192.0.43.10/

而不是

http://www.example.org/

当然,如果服务器执行基于名称的虚拟主机,则会失败。


选项2。

用缓存版本替换Socket::inet_aton(从LWP :: Protocol :: http调用IO :: Socket :: INET调用)。

use Socket qw( );
BEGIN {
    my $original = \&Socket::inet_aton;

    my %cache;
    my $caching = sub {
       return $cache{$_[0]} //= $original->($_[0]);
    };

    no warnings 'redefine';
    *Socket::inet_aton = $caching;
}

答案 1 :(得分:-3)

只需使用您网址中的IP地址替换域名:

use strict;
require LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;

# my $response = $ua->get('http://stackoverflow.com/');
my $response = $ua->get('http://64.34.119.12/');

if ($response->is_success) {
    print $response->decoded_content;  # or whatever
}
else {
    die $response->status_line;
}