[Cascavel-pm] Compactar string

Agnaldo Macedo agnaldo em starweb-software.com.br
Quinta Fevereiro 19 04:45:01 PST 2009


Nelson, rodou legal usando esse fragmento de código:

          print "Content-Encoding: gzip \n\n";
          my $xml_gziped = Compress::Zlib::memGzip( $xml );
          print $xml_gziped;

E o principal, houve um ganho significativo.
Num teste simples, um XML com cerca de 766Kb caiu para 44Kb.
E tanto no server quanto no client (ambos com hardware modestos), o tempo 
usado para compressão/descompressão dos dados foi insignicante.





----- Original Message ----- 
From: "Nelson Ferraz" <nferraz em gmail.com>
To: "Agnaldo Macedo" <agnaldo em starweb-software.com.br>; "Cascavel Perl 
Mongers" <cascavel-pm em pm.org>
Sent: Thursday, February 19, 2009 8:07 AM
Subject: Re: [Cascavel-pm] Compactar string


> Tenho um script que gera uma string XML (string, não arquivo).
> Tal string é enviada a um servidor web.
> Porém, algumas dessas strings possuem um tamanho maior, gerando trafego.
>
> Existe algum módulo que permite compactar uma string e dar print da nova
> string (compactada) gerada?

Você pode tentar compactar a string (Compress::Zlib::memGzip) e enviar
um header "Content-Encoding: gzip".

   use Compress::Zlib;
   my $xml_gziped = Compress::Zlib::memGzip( $xml );

No catalyst, você faria alguma coisa assim:

    $c->response->body( $xml_gziped );
    $c->response->content_length( length( $c->response->body ) );
    $c->response->content_encoding('gzip');

[]s

Nelson 



Mais detalhes sobre a lista de discussão Cascavel-pm