Minimizado CSS con PHP

Minimizar el CSS nos ayudará a acelerar y dar mejor rendimiento a nuestra página PHP, por lo que siempre es conveniente hacerlo, al menos en producción.

Para poder realizarlo, debemos tener en cuenta un punto muy importante: las rutas de las imágenes contenidas en nuestros CSS, ya que por lo general están con rutas relativas.

Para resolver este problema aconsejo crear un alias de Apache a un CDN común de imágenes, pudiéndolo ordenar por fichero CSS o como nos venga en gana.

Este método da muy buenos resultados y nos evitará más de un dolor de cabeza.

Directorio CDN para imágenes:

/var/www/vhosts/midominio.com/cdn_imagenes/  

Directorio imágenes css_uno:

/var/www/vhosts/midominio.com/cdn_imagenes/css_uno/  

Directorio imágenes css_dos:

/var/www/vhosts/midominio.com/cdn_imagenes/css_dos/

Alias Apache:

Alias /cdn_css/ /var/www/vhosts/midominio.com/cdn_imagenes/

Ahora solo quedaría modificar nuestros CSS y poner rutas absolutas de este modo:

/cdn_css/css_uno/imagen.jpg  

Y el script que nos minimizará todo el directorio de nuestros CSS:

<?php
$css_files = array
(
    'uno.css',
    'dos.css'
);

$css_content = '';
foreach ($css_files as $a_file) { $css_content .= file_get_contents($a_file); }

$css_content = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css_content);
$css_content = str_replace(': ', ':', $css_content);
$css_content = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $css_content);

ob_start("ob_gzhandler");

header('Cache-Control: public');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
header("Content-type: text/css");

echo($css_content);
?>

No hay comentarios

Agregar comentario