Sí amigos, lo es.

Es verdad que algunos CMS como WordPress nos tienen malacostumbrados a solucionar cualquier problema que nos surja instalando un plugin nuevo. ¿Qué quieres publicar contenido optimizado de tu web en Facebook y de manera automática? Instala este módulo. ¿Qué necesitas optimizar las imágenes del site porque pesan mucho? Hazlo con este otro. Pasa incluso que algunas de las funcionalidades de la plantilla de la web no nos gusta cómo funcionan y decidimos instalar un plugin que nos vaya mejor, como para gestionar los sliders, o lo que sea. El resultado de todo esto es que tenemos un montón de plugins instalados de manera descontrolada en nuestro sitio web, algunos incluso de manera redundante. Es cierto, además, que muchas de las funcionalidades que aportan los plugins podemos hacerlas nosotros mismos si tenemos un poquito de maña.

Pero, estaréis diciendo, ¿y qué problema tiene este tipo con los plugins?, ¿qué le han  hecho? Pues mirad, cada módulo que instalamos, añade a su vez un montón de “mierda” en el código sobre la que no tenemos ningún control. Puede ser que toda esta “mierda” sea incluso llamadas a JS y CSS, que son elementos que ralentizan enormemente la velocidad de carga, consiguiendo a veces, que los usuarios se sientan incómodos y se vayan. Y ni hablemos de si vienen desde un dispositivo móvil…

Pensemos que cada llamada que hacemos al servidor, nuestro navegador tiene que hacer la petición, el server tiene que recibirla, procesarla y devolvérnosla. Llega de nuevo a nosotros y el navegador la procesa y nos la enseña. Esto lo hace cada vez que hay una llamada externa, lo hará una vez por cada imagen, por cada CSS, por cada JS… Es decir, cuantas menos llamadas, más rápido irá la web, ¿no?

Entonces, con todo esto… ¿tiene sentido instalar un plugin para mejorar la velocidad de carga? ¿no es contraproducente? Pues yo, brutal enemigo de los plugins, creo que sí, y he hecho algunas pruebas para verificarlo y convenceros.

¿Cómo mejorar la velocidad de carga de tu web usando plugins?

Bueno, el objetivo de este artículo es mejorar la velocidad de carga de tu site sin que tengas que instalar nada, sólo añadiendo código a tu htaccess.

Paso 1: medir la velocidad de carga del site sin ningún tipo de optimización. La cosa quedó así:

*medido con Google Insights como recomendé en este otro post.

Conclusión: la web es asquerosamente lenta. Ni alguien con un interés extremo aguantaría la espera y se iría a la competencia.

Paso 2: habilitamos la compresión GZIP:

# BEGIN GZIP

<ifmodule mod_deflate.c>

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript

</ifmodule>

# END GZIP

Paso 3: activamos la caché del navegador, personalizando el cacheo para cada tipo de archivo agrupando los relacionados:

# BEGIN CACHE

# cache de imágenes y contenido flash un mes

<FilesMatch «.(flv|gif|jpg|jpeg|png|ico|swf)$»>

Header set Cache-Control «max-age=2592000»

</FilesMatch>

# cache de texto, css, y archivos javascript un mes

<FilesMatch «.(js|css|pdf|txt)$»>

Header set Cache-Control «max-age=2592000»

</FilesMatch>

# cache de archivos html htm un mes

<FilesMatch «.(html|htm)$»>

Header set Cache-Control «max-age=2592000»

</FilesMatch>

# desactivamos la cache para scripts y archivos dinámicos concretos

<FilesMatch «\.(pl|php|cgi|spl|scgi|fcgi)$»>

Header unset Cache-Control

</FilesMatch>

# END CACHE

Paso 4: ahora toca activar los ETAGS para los archivos que creamos interesantes:

# BEGIN ETAG

<FilesMatch «\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$»>

Header unset ETag

FileETag None

</FilesMatch>

# END ETAG

Paso 5: cabeceras de expiración:

# BEGIN EXPIRES HEADER

<ifmodule mod_expires.c>

ExpiresActive On

ExpiresDefault A3600

<filesmatch «.(jpg|JPG|gif|GIF|png|css|ico|js|woff)$»>

ExpiresDefault «access plus 7 day»

</filesmatch>

</ifmodule>

# END EXPIRES HEADER

Se aprecia la mejora, ¿verdad? Y todo esto sin instalar nada externo, todo código controlado por nosotros. Sólo me queda decir que el código incluido en este post se puede copiar y pegar en tu htaccess sin ningún problema, y no hará falta cambiar ni una línea si no quieres, es completamente operativo, aunque te recomiendo que hagas un backup antes del archivo original, no sea que la líes… ¡suerte!