Optimizar la velocidad de carga de WordPress (para tener contento a Google)

icono de wordpress Desde hace ya algunos años, uno de los factores que Google valora a la hora de establecer el ranking de una web es la velocidad de carga de sus páginas. Este es el anuncio oficial que hicieron en el 2010 justificándo esta decisión y esta la página de información y recursos que proporcionan en la actualidad donde tenemos una herramienta que mide los tiempos de descarga de nuestra página y hace recomendaciones para mejorarlos

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 😉

Resultados obtenidos con Google Page Speed Insights

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:

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:

Resultados obtenidos con 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.

Resultados obtenidos con Web Page Test

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 😉

5 comentarios

  1. Hola, en esta web estas utilizando lo que expones en el blog ? lo digo porque esta pagina tarda y bastante en moverse de una seccion a otra. Cuando te he leido que se trasformaba el PHP en htm mediante caché pensaba que iría mas rapido. Puede ser por la ubicacion del servidor ?

    1. Enrique: desde que escribí esto he cambiado algunas cosas, pero para mejor. Y el rendimiento del blog suele ser fluido y rápido casi siempre por debajo de 1 segundo (al menos en España, que es donde está el servidor) lo cual no está nada mal… ¿Tal vez tienes problemas con tu conexión? Una cosa que tal vez no queda clara es que la conversión de php a html estática sólo se realiza una vez que la página se visita. Pero si se trata de una página que no ha tenido visitas recientes hay que renderizarla de nuevo como una página php cualquiera.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información

ACEPTAR
Aviso de cookies