Existen multitud de buenos recursos en la web sobre este tema. A mi me gustaría destacar dos: las páginas de Exceptional Performance de Yahoo! (un clásico) y esta otra guía más reciente y mucho más centrada en satisfacer las exigencias de Google.
Yo, sinceramente, nunca me he preocupado mucho de estas cosas. Entendedme: me gusta que mis webs se carguen tan rápido como sea posible, pero no hasta el extremo de querer rebajar 100 milisegundos arañando tiempos de aquí y de allá. No obstante, hace unas semanas y más por «deporte» que por otra cosa me propuse jugar un poco con estas recomendaciones y pasé de una valoración de setenta y pocos puntos al 98/100 que veis bajo estas líneas. Os cuento como lo hice y os doy algunas recomendaciones por si os apetece jugar a lo mismo 😉
Lo primero que tienes que hacer es conocer bien como carga tu wordpress, ver como se distribuyen los tiempos y cuales son los principales cuellos de botella. En los enlaces anteriores ya hay referencias a algunas herramientas útiles para esto. Si queréis más, podéis probar con las siguientes:
- Web Page Test
- Load Impact Page Analysis
- GTmetrix
- Zoom Performance Scan
- Request Checker
- Pingdom Website Speed Test
- Byte Check
Estas herramientas nos servirán, además, para verificar que lo estamos haciendo bien y que los cambios que hacemos no son contraproducentes.
El primer punto a vigilar es el tema y los plugins que usas en tu wordpress. Un tema limpio, sin errores y que no esté sobrecargado de estilos, imágenes y javascript mejora notablemente la velocidad de carga. Haz la prueba, si no, cambiando del tuyo a alguno de los más simples que WordPress trae por defecto. Idem con los plugins. Hay algunos que son verdaderos parásitos. Desactívalos todos, comprueba los tiempos que obtienes y, luego, ve activándolos uno a uno probando de nuevo para ver cuales son los más problemáticos. Valora si puedes vivir sin estos o busca sustituirlos por otros equivalentes pero más eficientes.
Piensa, además, que el contenido que incluyas también cuenta. Todos los objetos que incrustes (Youtube, Vimeo, etc.) van a ser valorados en la carga de tu página. En estos momentos, por ejemplo, la valoración que hace Google de mi portada baja del 98 que veis arriba a un 92 por culpa del objeto de Scribd que he incrustado un par de posts más abajo. Las imágenes también cuentan bastante. Usar miniaturas (thumbnails) que requieran de un click para verlas en alta calidad es una buena práctica. Si, como a mi, no te agrada, puedes usar alguna herramienta para optimizarlas antes de subirlas a tu servidor web. Mis favoritas son optipng y jpegoptim. Si, si, para Linux y en línea de comando. Si buscas otra cosa no se que haces por estas páginas 😉 Usa la opción --
strip-all con jpegoptim.
Vamos ahora a cargar nuestro blog con una de las herramientas que hemos visto antes y a observar lo que ocurre. Por ejemplo usando Web Page Test:
Como puedes ver, uno de los grandes devoradores de tiempo en las páginas de wordpress (y en general con todas las que usan PHP) es el llamado Time to First Byte o TTFB. Se trata del tiempo que transcurre entre que el servidor web recibe la petición de un cliente y el navegador de este recibe el primer byte y, básicamente, se consume sobre todo en procesar el código PHP. La mejor forma de reducirlo al máximo es usar alguna de las muchas cachés para wordpress que convierten tus páginas PHP a contenido estático. Yo uso W3TC habilitando sólo las opciones de caché de páginas y de objetos (para el resto de optimizaciones uso otros plugins) y sólo con esto podrás comprobar que los resultados mejoran sorprendentemente.
Utilizar una caché para las consultas a la base de datos también ayuda un poco. W3TC incluye también esta característica, pero yo prefiero usar otro: DB Cache Reloaded Fix.
Incluye cabeceras de expiración para informar a los navegadores de por cuanto tiempo pueden cachear los contenidos estáticos de tu página (imágenes, css, etc.). Para ello lo primero que tienes que hacer es asegurarte que tu apache tiene activado el modulo mod_expires. Luego, en el fichero de definición del Virtual Host o, en su defecto, en el fichero .htaccess tienes que escribir las directivas correspondientes que pueden ser generales o específicas por tipo de archivo. En el anterior enlace a las páginas de apache tienes instrucciones de como hacerlo. Te copio aquí las mías:
ExpiresActive On ExpiresByType image/gif "access plus 6 months" ExpiresByType image/jpg "access plus 6 months" ExpiresByType image/jpeg "access plus 6 months" ExpiresByType image/png "access plus 6 months" ExpiresByType image/x-icon "access plus 6 months" ExpiresByType image/ico "access plus 6 months" ExpiresByType application/javascript "now plus 1 month" ExpiresByType application/x-javascript "now plus 1 month" ExpiresByType text/javascript "now plus 1 month" ExpiresByType text/css "now plus 1 month" ExpiresDefault "access plus 1 month"
Optimiza y minimiza el tamaño de los archivos HTML, CSS y Javascript. De nuevo, si lo prefieres puedes activar estas características en el plugin de W3TC pero yo uso otro para esto: Autoptimize. El «truco» consiste en eliminar de estos ficheros cualquier espacio, salto de línea o comentario superfluo y combinarlos en un único archivo, de tal forma que reducimos el número de «requests» al servidor y el tamaño de las mismas.
Estos son los factores más generales a tener en cuenta, pero existen muchos otros particulares de cada caso que tendrás que estudiar usando las herramientas que te recomiendo por aquí y observando cuales son los cuellos de botella de tu instalación particular. Suerte con ello 😉