WordPress es un sistema de cms que incialmente se diseñó para ser fácil de usar y de diseñar. Su API basada en eventos y funciones (template tags) no tenían como prioridad el ahorrar recursos o ser eficientes, sino dar facilidad de uso e inmediatez a la hora de conseguir resultados.
Por ello enseguida surgió la necesidad de tener opciones de caché, que tuviesen como objetivo principal el ahorrar consultas en la base de datos. Con la facilidad de instalación de plugins y la despreocupación por parte de los programadores en buscar el ahorro de llamadas a base de datos e incluso a fuentes de datos de servicios externos, como rss, cubrir esta problemática se hacía clave.
En wordpress tenemos varias opciones para cachear nuestros contenidos, las principales son las siguientes:
Es un plugin que no requiere ningún servicio externo, simplemente almacena el html generado en cada página (o url llamada por petición GET) en el disco duro y lo sirve en el evento INIT de wordpress.
Es el plugin más completo en cuanto a opciones de caché. Te permite además de almacenar los resultados en el disco duro, usar tecnologías actuales como APC que funcionan a nivel local del servidor web o Memcached que pueden ser locales o estar en otros servidores de la misma red, de forma centralizada y distribuída.
Es importante saber la diferencia entre almacenar la caché de forma local en el servidor o hacerlo en otro servidor o cluster de servidores. La diferencia en rendimiento se encuentra en que las llamadas pasan por la red local, por lo tanto penaliza un poco más a la respuesta. Sin embargo el separar la cache del servidor web nos permite escalar y ofrecer alta disponibilidad. En resumen, en local y en memoria (APC)funciona la caché mucho más rápido que almacenándola en otro servidor, pero esto último nos permite tener tolerancia a fallos y escalar mejor.
Varnish es un proxy caché super eficiente. ¿Qué significa y cómo funciona esto? En un escenario con un proxy cache, es dicho servicio el que sirve nuestra web al usuario y no el servidor web. Es decir, está en medio entre el usuario y el servidor web. Cuando el usuario solicita la página por primera vez, el proxy llama al servidor web y esté le “envía” el resultado en html. Cuando otro usuario consulta la misma página, el proxy caché le devuelve el html directamente, es decir, el servidor web no tiene ni que estar encendido dependiendo del tipo de servicio de proxy y la duración de la caché.
En el caso de varnish, nos permite almacenar el html en memoria y hace un uso muy eficiente de la misma. Por lo que podemos ahorrarnos en muchos casos un servidor dedicado y tener un servidor compartido con nuestro wordpress y un vps sencillo para el servidor proxy cache.
El problema suele ser recargar o refrescar la caché cuando el contenido se actualiza. Este plugin se integra a la perfección con Varnish y con los eventos de actualización de wordpress.
Otro problema cuando lidiamos con sitios web que necesitan caché, reside en el tiempo de carga de la página para el primer usuario que visita la misma. El resto de usuarios no percibirán ese problema ya que consumirán el contenido desde la cache.
Este plugin nos permite “llenar” la caché de nuestras páginas sin que nadie tenga que visitarlas por primera vez.