如何让 LWP::UserAgent 缓存连接?
How can I get LWP::UserAgent to cache connections?
在 perl 脚本中,我使用 LWP::UserAgent 这样的:
my $ua = LWP::UserAgent->new( keep_alive => 10 );
在执行了 $ua->get
几千次以从 https://example.com 获取 URL 之后,我希望 $ua->conn_cache
有十个打开的连接。但是,如果我使用 Data::Dumper 并执行:
print Dumper( $ua->conn_cache );
我只看到一个连接:
$VAR1 = bless( {
'cc_limit_total' => 10,
'cc_conns' => [
[
bless( \*Symbol::GEN1, 'LWP::Protocol::https::Socket' ),
'https',
'example.com:443',
1638549871
]
]
}, 'LWP::ConnCache' );
我是不是做错了什么,或者我只是误解了 conn_cache 的转储显示的内容?就其价值而言,我获取的 URL 仅在查询参数方面有所不同。
编辑:
好的,我明白了(见下面的答案)。谢谢。我会研究 LWP::Parallel::UserAgent 之类的东西。
处理对同一主机的许多顺序请求的最有效方法是重用到该主机的单个持久 TCP 连接 -这正是你所看到的。如果对同一主机的请求是并行发送而不是顺序发送,或者如果请求是发送到多个主机,则需要更多连接。
要检查后者,只需向 example.com 和 example.org 发送请求 - 您最终会在连接缓存中得到两个条目,一个用于 example.com,一个用于 example.org.
在 perl 脚本中,我使用 LWP::UserAgent 这样的:
my $ua = LWP::UserAgent->new( keep_alive => 10 );
在执行了 $ua->get
几千次以从 https://example.com 获取 URL 之后,我希望 $ua->conn_cache
有十个打开的连接。但是,如果我使用 Data::Dumper 并执行:
print Dumper( $ua->conn_cache );
我只看到一个连接:
$VAR1 = bless( {
'cc_limit_total' => 10,
'cc_conns' => [
[
bless( \*Symbol::GEN1, 'LWP::Protocol::https::Socket' ),
'https',
'example.com:443',
1638549871
]
]
}, 'LWP::ConnCache' );
我是不是做错了什么,或者我只是误解了 conn_cache 的转储显示的内容?就其价值而言,我获取的 URL 仅在查询参数方面有所不同。
编辑: 好的,我明白了(见下面的答案)。谢谢。我会研究 LWP::Parallel::UserAgent 之类的东西。
处理对同一主机的许多顺序请求的最有效方法是重用到该主机的单个持久 TCP 连接 -这正是你所看到的。如果对同一主机的请求是并行发送而不是顺序发送,或者如果请求是发送到多个主机,则需要更多连接。
要检查后者,只需向 example.com 和 example.org 发送请求 - 您最终会在连接缓存中得到两个条目,一个用于 example.com,一个用于 example.org.