viernes, 2 de abril de 2010

Comprimir archivos CSS y JavaScript con GZip (Todos los navegadores)

Las razones principales para reducir el peso de tus páginas web son evidentes:

- Cargan con mayor rapidez
- Ahorras ancho de banda

El problema es que no todos los navegadores soportan la codificación con gzip.

La solución que utilizo es subir una versión comprimida y una versión plana del mismo fichero, luego determino si el navegador soporta la codificación GZip y de esta maneja envío uno u otro archivo.

En este ejemplo cambio la extensión de los archivos comprimidos de Javascript .jsgz y la de los archivos CSS a .csgz.

1- Editando el .htaccess
Añadir las siguientes lineas al .htaccess

# Apache Content Negotiation http://bit.ly/cYepUl
Options MultiViews

# Compressed javascript and CSS files
AddEncoding x-gzip .jsgz .csgz

# Añadir los tipos (cómo se interpretará el fichero)
AddType application/x-javascript .jsgz
AddType text/css .csgz


2- Añadir la comprobación a las páginas que utilicen los archivos comprimidos (PHP)

$jsgz = substr_count($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip')?'.jsgz':'.js';
$csgz = $jgz?'.csgz':'.css';

y finalmente, al momento de incluir los archivos CSS y JS pegar la extensión con PHP

<link type="text/css" href="style<?php echo $csgz; ?>" rel="stylesheet">
<script type="text/javascript" src="script<?php echo $jsgz; ?>"></script>

De esta forma se cargarán los archivos comprimidos solamente si el cliente los soporta.


1 comentario:

  1. Hola,
    magnífico Blog. Navegando por Google he llegado a tí y quería saber si puedes solucionarme algunas dudas que tengo para optimizar el rendimiento de mi blog.

    1) Es un Blog Blogger (Diarios de la nube). He hecho todo lo necesario para opitmizar en PageSpeed hasta sacar un 98... pero hay cosas que no puedo cambiar, por ejemplo los .css ¿cómo puedo quitar los de blogger y poner los míos optimizados si desde la plantilla no puedo tocar ese punto?.

    2) ¿Cómo poder tocar en Blogger el .htacces si no puedes escribir nada?...

    En fin, creo que ninguna de las dos cosas se puede hacer, pero quería contrastarlo con un colega de profesión para ver si hay alguna forma viable...

    Muchísimas gracias.

    ResponderEliminar