如何在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
}在我看来,第二个版本效率低下,因为它每次都会重新打开连接,对吗?有什么问题我应该知道吗?
发布于 2014-04-02 19:13:43
正如Miller评论的那样,您的两个代码示例在效率方面并没有太大的不同。这两种方法都将通过一个新的连接为每个循环迭代发送一个新的GET请求,这比创建一个对象的成本更重要。
可以使用实验模块LWP::ConnCache缓存连接。
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::ConnCache中使用相同的LWP::UserAgent对象。
https://stackoverflow.com/questions/22819211
复制相似问题