Compression of pages on PHP
The basic purpose of a script - compression of the pages transmitted by the server to a browser. At me it was on the average compressed in 4 times.
One "BUT": do not put a level of compression more than 3 - the size will not decrease, and loading on the server - still as.
The script is used as follows:
<?
include (' gzdoc.php ');
?>
<HTML>
... the page...
</HTML>
<?
gzdocout ();
?>
gzdoc.php
** |
** |... the page...
** |
** |
**-------------End of file-----------
*/
ob_start ();
ob_implicit_flush (0);
function CheckCanGzip () {
global $HTTP_ACCEPT_ENCODING;
if (headers_sent () || connection_aborted ()) {
return 0;
}
if (strpos ($HTTP_ACCEPT_ENCODING, ' x-gzip ')! == false) return "x-gzip";
if (strpos ($HTTP_ACCEPT_ENCODING, ' gzip ')! == false) return "gzip";
return 0;
}
/* $level = compression level 0-9, 0=none, 9=max */
function GzDocOut ($level=3, $debug=0) {
$ENCODING = CheckCanGzip ();
if ($ENCODING) {
print "\n\n";
$Contents = ob_get_contents ();
ob_end_clean ();
if ($debug) {
$s = " Not compress
length: " .strlen ($Contents.) ";";
$s. = " Compressed length: ".
strlen (gzcompress ($Contents, $level)).
" ";
$Contents. = $s;
}
header (" Content-Encoding: $ENCODING ");
print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
$Size = strlen ($Contents);
$Crc = crc32 ($Contents);
$Contents = gzcompress ($Contents, $level);
$Contents = substr ($Contents, 0, strlen ($Contents) - 4);
print $Contents;
print pack (' V ', $Crc);
print pack (' V ', $Size);
exit;
} else {
ob_end_flush ();
exit;
}
}
?>

|