Una de las primeras cosas que se recomiendan tras instalar un WordPress es activarle un plugin de caché. Yo mismo lo hice y lo recomendé en mi configuración de WP.

El caso es que tras configurar y optimizar CloudFlare, haciendo pruebas, me di cuenta que en realidad un plugin de cache, ya sea W3 Total Cache, como WP Super Cache, generalmente ralentizan la instalación de WordPress.

Es lógico, un plugin de caché, primero sobrecarga la instalación del blog, porque requiere gestionar un plugin adicional, y que por ejemplo en el caso de W3TC es realmente voluminoso y complejo. Ello implica cargar nuevas clases, instalar nuevos hooks, y enrutar varias funcionalidades de WordPress para que pasen por él. Todo esto lo sufriremos en cada solicitud de página que se nos haga.

Después, el caché comprobará si esa página, objeto, consulta de base de datos, etcétera, está disponible en el caché o no. Si es así, nos la retornará directamente del caché, lo que será bastante más eficiente que generarla dinámicamente cada vez. Lo que ocurre, es que para que en realidad sea más veloz, el caché debe estar en memoria (APC, Memcached, …), pues si está en disco, aunque este se base en estado sólido (SSD), salvo que nuestro tema sea realmente complejo, no nos daría ningún beneficio.

El problema es que la memoria RAM es limitada, y por tanto no todas nuestras páginas pueden entrar en el caché, lo que nos lleva a que en webs voluminosas, el caché acertará más bien poco, y las páginas se servirán de manera normal sin usar caché.

Cuando digo manera normal, en realidad miento. La manera no es normal, ya que antes de eso, el caché ha debido verificar que esa página no se encontraba en el caché, guardarla en el caché para futuras peticiones, y ahora sí, servirla de manera normal.

Lo adecuado es además, que ese caché guarde las páginas con los HTML, CSS y Javascript minificados, es decir, más tiempo necesario para generarlas.

Para que os hagáis una idea, mi página principal necesitaba de 1,5 segundos para generarse con W3 Total Cache activado. Sin él, son unos 0,4 segundos. Es decir, 4 veces más rápidas.

Una página interior (single) tardaba unos 0,8 segundos, sin caché vuelve a ser unas 4 veces más rápida, o sea 0,2 segundos.

Es decir, desactivando el caché, he conseguido mejorar mi tiempo de respuesta en un factor del 400%.

Por supuesto si tienes pocas páginas, que son muy consultadas, y con memoria de sobra, un caché te irá muy bien. Pero para la mayoría de páginas personales, en alojamientos compartidos, son sin duda un gran freno.

¿Qué es lo que si he visto que beneficia? Pues ya lo comentaba, CloudFlare, que es un servicio de caché y que no va a consumir recursos de nuestra máquina. Trabajará transparentemente, ahorrándonos CPU, memoria y ancho de banda. Además, como su hardware en la nube es potente, conseguiremos ratios de cacheo del orden del 70%, mucho más que con un plugin de caché local.

Quizás sus capacidades de minificación no sean tan potentes, pero que preferimos, ¿ahorrar 100 Kb. de transferencia, o servir 4 veces más rápido?

Después tenemos OPCache, el plugin de caché nativo en PHP 7 que se encarga de cachear archivos PHP ya interpretados. Es decir, guarda en memoria el código que ejecutará el intérprete, y nos evitará que WordPress deba cargar cada vez el tema, includes, páginas, etcétera, y que funciona muy bien.

Por último, pero no menos importante, es FileOptimizer, una ayuda imprescindible para reducir el peso de recursos estáticos como imágenes, documentos, vídeos o audios.