Roger Stringer nos enseña como automatizar el proceso de comprimir hojas de estilos y Js “on the fly” por medio de PHP y mod_rewrite.

La velocidad de carga en un sitio es algo fundamental, si tenemos varios hojas de estilos y archivos Js, lo mejor sería tenerlos comprimidos. Si bien podemos comprimir dichos archivos con varias herramientas online o localmente, esta es una receta que nos ahorrara tiempo.

Básicamente se creara un archivo en PHP que “leerá” los CSS y JS y borrara todos los espacios en blanco y nos devolverá un archivo comprimido.

Primeramente crearemos un archivo llamado csszip.php:

<?php
ob_start ("ob_gzhandler");
if( isset($_REQUEST['file']) ){
	$file = $_REQUEST['file'];
	$ext = end(explode(".", $file));
	switch($ext){
		case 'css':$contenttype = 'css';break;
		case 'js':$contenttype = 'javascript';break;
		default:die();break;
	}
	header('Content-type: text/'.$contenttype.'; charset: UTF-8');
	header ("cache-control: must-revalidate");
	$offset = 60 * 60;
	$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
	header ($expire);
	$data = file_get_contents($file);
	$data = compress($data);
	echo $data;
}
exit;
function compress($buffer) {
	$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
	$buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
	return $buffer;
}

csszip.php tomara los argumentos dados y comprimirá el archivo.

Ahora, para automatizar el proceso de carga, crearemos una nueva regla en nuestro archivo .htaccess (localizado en el root del directorio).

RewriteEngine On
RewriteRule ^(.*).css$ /csszip.php?file=$1.css [L]

Si la regla RerwriteEngine On ya se encuentra presente, la obviamos y procedemos con la siguiente línea.

Cada vez que se envié una consulta a algún archivo .CSS este será comprimido por el archivo csszip.php y la nueva regla en .htaccess

Si deseamos comprimir archivos JS, solo añadimos esta regla:

RewriteRule ^(.*).js$ /csszip.php?file=$1.js [L]

Notaras luego de implementar esta pequeña receta, como el tiempo de carga y el consumo de bandwidth se reducen, lo que se traduce en una página que cargara más rápido y te ahorras algunos megas en tu consumo mensual de bandwidth.

Articulo original escrito por Roger Stringer