Comprimir página con PHP

Para aligerar el tiempo de carga de nuestras páginas generadas con PHP, podemos enviarlas al navegador comprimidas con GZip utilizando las funciones de control de salida, para ello, llamaremos a la función predefinida ob_gzhandler cómo tratante de la función ob_start, veamos un ejemplo:

<?

ob_start("ob_gzhandler");

// Contenido de la página, puede contener

// tanto HTML cómo PHP

ob_end_flush();

?>

Tener en cuenta que todo el contenido debe estar en el lugar indicado por lo que los primeros caracteres del documento deben ser <? y los dos últimos ?> y no se debe añadir nada excepto donde se indica, si no vamos con cuidado recibiremos un error parecido al siguiente:

Warning: Cannot add header information...

Otra forma más completa todavía de compresión, consiste en aplicar la misma función, pero eliminando a su vez los espacios y saltos de línea de la fuente del documento, lo que no tendrá ningún efecto visual pero disminuirá el tiempo de descarga, veamos cómo hacerlo:

<?

ob_start();

// Contenido de la página, puede contener

// tanto HTML cómo PHP

$cntACmp =ob_get_contents();

ob_end_clean();

$cntACmp=str_replace("\n",' ',$cntACmp);

$cntACmp=ereg_replace('[[:space:]]+',' ',$cntACmp);

ob_start("ob_gzhandler");

echo $cntACmp;

ob_end_flush();

?>

Este método funciona igual que el anterior solo que antes de comprimir elimina los saltos de línea y espacios innecesarios, pero debemos tener en cuenta las mismas precauciones o no funcionará.