ConnCache not been used in LWP::UserAgent
am 19.04.2006 15:56:46 von amarrero
All,
I'm trying to put together a short script to test a Keep-Alive
connection:
##### CODE BEGINS #####
#!env perl -w
use strict;
use LWP::UserAgent;
use LWP::ConnCache;
my $browser = LWP::UserAgent->new(conn_cache => 1);
$browser->conn_cache(LWP::ConnCache->new());
my @lines = ("mind is a terrible thing to waste\n") x 10;
my $start = time;
my $url = 'http://yourhost/yourpath';
my $count = 0;
foreach (@lines) {
my $response = $browser->post( $url,
[ 'pos' => $count,
'block' => $_,
],
'Content_Type' => 'form-data',
);
$count += length $_;
}
print time() - $start;
print " secs\n";
##### CODE ENDS #####
I noticed that when the request is made the HTTP headers don't
include "Connection: Keep-Alive". It does include "Connection: TE".
Reading the UserAgent.pm source code I noticed that the connection
cache is stored in $self->{conn_cache} but that value is never used
in the module. May be is used by reference in other places by
passing $self.
The point is that the client is opening connections for every request.
/amn
Re: ConnCache not been used in LWP::UserAgent
am 19.04.2006 16:36:40 von amarrero
Mea Culpa. The ConnCache object is been used in LWP::Protocol and its
sub classes. How ever do one have to add the Connection: Keep-Alive
header in the request anyway?
/amn
On Apr 19, 2006, at 9:56 AM, Alexis Marrero wrote:
> All,
>
> I'm trying to put together a short script to test a Keep-Alive
> connection:
>
> ##### CODE BEGINS #####
> #!env perl -w
> use strict;
>
> use LWP::UserAgent;
> use LWP::ConnCache;
>
> my $browser = LWP::UserAgent->new(conn_cache => 1);
> $browser->conn_cache(LWP::ConnCache->new());
> my @lines = ("mind is a terrible thing to waste\n") x 10;
> my $start = time;
> my $url = 'http://yourhost/yourpath';
> my $count = 0;
>
> foreach (@lines) {
> my $response = $browser->post( $url,
> [ 'pos' => $count,
> 'block' => $_,
> ],
> 'Content_Type' => 'form-data',
> );
>
> $count += length $_;
> }
>
>
> print time() - $start;
> print " secs\n";
>
> ##### CODE ENDS #####
>
> I noticed that when the request is made the HTTP headers don't
> include "Connection: Keep-Alive". It does include "Connection: TE".
>
> Reading the UserAgent.pm source code I noticed that the connection
> cache is stored in $self->{conn_cache} but that value is never used
> in the module. May be is used by reference in other places by
> passing $self.
>
> The point is that the client is opening connections for every request.
>
> /amn
Re: ConnCache not been used in LWP::UserAgent
am 19.04.2006 17:46:09 von gisle
Alexis Marrero writes:
> I'm trying to put together a short script to test a Keep-Alive
> connection:
>
> ##### CODE BEGINS #####
> #!env perl -w
> use strict;
>
> use LWP::UserAgent;
> use LWP::ConnCache;
>
> my $browser = LWP::UserAgent->new(conn_cache => 1);
This parameter is wrong, but should not really matter as it is
overwritten in the next statement:
> $browser->conn_cache(LWP::ConnCache->new());
> my @lines = ("mind is a terrible thing to waste\n") x 10;
> my $start = time;
> my $url = 'http://yourhost/yourpath';
> my $count = 0;
>
> foreach (@lines) {
> my $response = $browser->post( $url,
> [ 'pos' => $count,
> 'block' => $_,
> ],
> 'Content_Type' => 'form-data',
> );
>
> $count += length $_;
> }
>
>
> print time() - $start;
> print " secs\n";
>
> ##### CODE ENDS #####
>
> I noticed that when the request is made the HTTP headers don't
> include "Connection: Keep-Alive". It does include "Connection: TE".
'Connection: Keep-Alive' is only used when talking to HTTP/1.0
servers. For HTTP/1.1 it shouldn't be used.
> Reading the UserAgent.pm source code I noticed that the connection
> cache is stored in $self->{conn_cache} but that value is never used
> in the module. May be is used by reference in other places by
> passing $self.
Yes. It's picked up directly by LWP/Protocol/http.pm.
> The point is that the client is opening connections for every request.
Does not happen when I test your pogram against my server, so I do
belive LWP does the right thing..
Regards,
Gisle