Comprimir CSS usando PHP
La idea
La idea es poder hacer de un archivo amplio, con saltos de línea y espacios innecesarios para el funcionamiento del archivo, un archivo sin espacios, ni saltos de línea…etc de tal forma que reduzcamos su tamaño y nuestra página cargue más rápido.
Cómo hacerlo
Para poder hacer esto necesitamos un lenguaje, en este caso PHP en un simple script al que le indiquemos que archivos queremos cambiar. Echemos un vistazo al código necesario:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { /* quitamos comentarios */ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); /* quitamos espacios en blanco, salto de lineas..... */ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } /* incluimos los archivos css que queremos comprimir */ include('master.css'); include('print.css'); ob_end_flush(); ?> |
Este método es de Reinhold Weber y personalmente, me parece uno de los más fáciles de entender. (fuente) Además hay que tener en cuenta que si incluimos más de uno los combinará en uno solo.
Los archivos que se les pasen, no tienen por qué estar en el mismo directorio, se le puede pasar una ruta, por supuesto.
Si tienes cualquier problema con el script a la sección de comentarios.

4 Comentarios
Interesante, supongo que para blogs y sites pequeños no hará falta, pero esta bien saber que existen estas cosas.
@via twitter: Claro, el tema está en que si tienes un sitio muy grande, pues esto reduce el tiempo de carga.
En general no hace falta, pero un aumento de la velocidad siempre viene bien, y los usuarios tienden a notarlo jeje.
Saludos!
Mejor utilizar una herramienta especialmente pensada para comprimir CSS, porque queda mucho espacio para la optimización.
Por ejemplo, se podría eliminar el ‘;’ de la última propiedad de cada regla, o sustituir varias propiedades por su atajo (border-color, border-width, border-style, … por border, por ejemplo).
@Zootropo. Si, claro, el único problema es la automatización, es un poco rollo el tema de ir a una página pegar el CSS, copiar la respuesta y ponerla en tu archivo. A pesar de ello normalmente utilizo Css Compressor, que está bastante bien, la verdad,