Changeset 533

Show
Ignore:
Timestamp:
08/18/06 22:44:54 (4 years ago)
Author:
hachi
Message:

r18066@lj (orig r516): bradfitz | 2006-08-18 12:08:18 -0700
moving cache populating to method on service class

Location:
trunk/lib/Perlbal
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/Perlbal/BackendHTTP.pm

    r529 r533  
    386386        return; 
    387387    } elsif ((my $urls = $hd->header('X-REPROXY-URL')) && $self->may_reproxy) { 
    388         my $res_headers = $self->{res_headers}; 
    389  
    390         if (defined $reproxy_cache_for and my $reproxy_cache = $self->{service}->reproxy_cache) { 
    391             my ($timeout_delta, $cache_headers) = split ';', $reproxy_cache_for, 2; 
    392             my $timeout = $timeout_delta ? time + $timeout_delta : undef; 
    393  
    394             my $hostname = $client->{req_headers}->header("Host"); 
    395             my $request = $client->{req_headers}->{requestLine}; 
    396  
    397             $hostname = '' unless defined $hostname; 
    398             $request = '' unless defined $request; 
    399  
    400             my $key = "$hostname|$request"; 
    401 #            warn "Caching redirect in '$key'\n"; 
    402  
    403             my @headers; 
    404             foreach my $header (split /\s+/, $cache_headers) { 
    405                 next unless my $value = $res_headers->header($header); 
    406                 $value = _ref_to($value) if uc($header) eq 'CONTENT-TYPE'; 
    407                 my $key = _ref_to($header); 
    408                 push @headers, ($key, $value); 
    409             } 
    410 #            warn "Code: $res_headers->{code} Headers: ", join( ",", @headers ), "\n"; 
    411             $reproxy_cache->set($key, [$timeout, \@headers, $urls]); 
    412         } 
    413  
     388        $self->{service}->add_to_reproxy_url_cache($reproxy_cache_for, $hd) 
     389            if $reproxy_cache_for; 
    414390        $client->start_reproxy_uri($self->{res_headers}, $urls); 
    415391        $self->next_request; 
  • trunk/lib/Perlbal/Service.pm

    r527 r533  
    13831383} 
    13841384 
     1385sub add_to_reproxy_url_cache { 
     1386    my Perlbal::Service $self; 
     1387    my ($self, $reshd) = @_; 
     1388 
     1389    my $reproxy_cache_for = $hd->header('X-REPROXY-CACHE-FOR'); 
     1390    my $urls              = $hd->header('X-REPROXY-URL'); 
     1391 
     1392        if (defined $reproxy_cache_for and my $reproxy_cache = $self->{service}->reproxy_cache) { 
     1393            my ($timeout_delta, $cache_headers) = split ';', $reproxy_cache_for, 2; 
     1394            my $timeout = $timeout_delta ? time() + $timeout_delta : undef; 
     1395 
     1396            my $hostname = $client->{req_headers}->header("Host") || ''; 
     1397            my $requri   = $client->{req_headers}->request_uri    || ''; 
     1398            my $key = "$hostname|$requri"; 
     1399 
     1400            my @headers; 
     1401            foreach my $header (split /\s+/, $cache_headers) { 
     1402                next unless my $value = $res_headers->header($header); 
     1403                $value = _ref_to($value) if uc($header) eq 'CONTENT-TYPE'; 
     1404                my $key = _ref_to($header); 
     1405                push @headers, ($key, $value); 
     1406            } 
     1407            $reproxy_cache->set($key, [$timeout, \@headers, $urls]); 
     1408        } 
     1409 
     1410} 
     1411 
    138514121; 
    13861413