Primeras pruebas con el compactador de zenphp
21 Febrero, 2008
Las primeras pruebas del compactador de HTML,JavaScript y CSS integrado en zenphp ,para su uso en la clase zen_plantilla está siendo todo un éxito, aunque el algoritmo es sencillo,ya que es usado para compactar/comprimir los espacios en blanco y demás caracteres sobrantes, puede reemplazarse dicha llamada por otra función como la de la librería: minify.
Un programa de ejemplo es tan sencillo como lo siguiente:
<?php require_once 'zenphp/clases/clase_zen_compactador.php'; $html = file_get_contents('http://www.elpais.es/'); $tamano_antes = mb_strlen($html, '8bit'); $compactador = new zen_compactador(array( 'mostrar_buffer' => false )); $html = $compactador->destructor($html); $tamano_despues = mb_strlen($html, '8bit'); echo 'Con los espacios en blanco eliminados, el tamaño del fichero HTML se reduce de '. round($tamano_antes/1024, 2). 'KB a '. round($tamano_despues/1024, 2). 'KB,ahorramos '.round((1-($tamano_despues/$tamano_antes))*100, 2). '%<br />-----------------<br /><br />'. $html; ?>
La salida obtenida es:
——————
Con los espacios en blanco eliminados, el tamaño del fichero HTML se reduce de 133.52KB a 111.55KB,ahorramos 16.46%
—————–
podeis comprobarlo ![]()
Si no teneis acceso afuera desde el servidor por problemas de firewall, podeis guardar la web a mano o con PERL en un fichero y luego abrirla con
$html = file_get_contents('p1.html');
No necesitamos nada más que obtener la clase desde el repositorio para hacer la prueba XD
Compártelo

Febrero 21, 2008 a las 10:40 pm
Una duda, a ver si me puedo “aprovechar” de tu trabajo
Si entiendo bien, comprimes la cache que se manda al navegador para que la web pese menos. ¿La descompresión se hace luego en el cliente con Javascript o algo así?
Un saludo,
Miguel
Febrero 21, 2008 a las 10:59 pm
Hola Miguel, pues mira, primero se carga el fichero (o la url), eso se guarda en un buffer, de ahi separas los elementos que no quieres procesar para quitar los espacios con funciones basadas en expresiones regulares y después se compacta el resto, se recuperan los elementos iniciales y se comprime para enviarse, la última parte es opcional porque el mismo servidor usa gzip si en las cabeceras lo especificas, apache se encarga de ello, a la clase le queda esa parte, comprimir lo que se ha compactado con gzip, no está hecho porque en zenphp se usan dichas cabeceras y ahora me centro más en otra parte, por ejemplo el scaffolding que lo tengo pendiente…no puedo obligar a que el cliente reciba/envie código a comprimir o compactar con javascript porque se puede deshabilitar y esta clase es algo opcional, por la carga que supone…no me enrrollo más =)