如何在Perl中最佳地使用lwp::useragent?
如果我需要进行几个HTTP调用,我会重用同一个对象吗?
例如。

my $browser = LWP::UserAgent->new;
foreach my $url (@urls) {
   my $response = $browser->get( $url );
   # process response
}


foreach my $url (@urls) {
   my $browser = LWP::UserAgent->new;
   my $response = $browser->get( $url );
   # process response
}

在我看来,第二个版本效率很低,因为它每次都会重新打开连接,对吧?有什么我应该知道的吗?

最佳答案

正如miller所评论的,您的两个代码示例在效率方面并没有太大的不同。两者都将通过每个循环迭代的新连接发送一个新的GET请求,这比创建对象的成本更重要。
您可以使用实验模块缓存连接:

use LWP::ConnCache;
use LWP::UserAgent;

my $cache = LWP::ConnCache->new;
$cache->total_capacity(10); # Cache up to 10 connections

my $ua = LWP::UserAgent->new(conn_cache => $cache);
# Alternatively, my $ua = LWP::UserAgent->new(keep_alive => 10);

$ua->get('http://www.google.com');
$ua->get('http://www.google.com'); # Should reuse cached connection

注意,您可以在多个LWP::ConnCaches中使用相同的LWP::ConnCache对象。

关于perl - 重用LWP:UserAgent?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22819211/

10-12 05:54