CGI-WebGzip
view release on metacpan or search on metacpan
# Run compression.
my ($newBody, $newHeaders, $stat);
if (length($body) == 0) {
($newBody, $newHeaders) = ($body, $headers);
} else {
($newBody, $newHeaders, $stat) = ob_gzhandler($body, $headers);
$status = $stat;
}
# Run callback if defined. Callback may set additional cookies
# printing Set-Cookie header. If callback returns 0, no data
# is output by this function (presume callback did it itself).
if ($callback) {
$callback->($newBody, $newHeaders, $body) or return;
}
binmode(STDOUT);
print $newHeaders;
print "\r\n\r\n";
print $newBody;
}
use CGI::WebGzip(5);
# Set callback function which would be called after compressing,
# but before any output. You may set cookie in this function to
# display them later on the page (using JavaScript).
use CGI::WebGzip;
BEGIN {
CGI::WebGzip::setCallback(sub {
my ($nL, $oL) = (length $_[0], length $_[2]);
print sprintf "Set-Cookie: page_size=%d,%d; path=/\n", $oL, $nL;
return 1;
});
}
# Working together with CGI::WebOut.
use CGI::WebGzip;
use CGI::WebOut;
print "Hello, world!";
( run in 1.167 second using v1.01-cache-2.11-cpan-e9199f4ba4c )