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.