WordPress es un sistema de administración de contenidos, lo que por definición supone que crea un sitio controlado de forma dinámica. En el entorno tecnológico actual significa que el contenido administrado y todos sus metadatos se almacenan en una base de datos. Las solicitudes de página tendrán que acceder a la base de datos para determinar qué contenido mostrar, mientras que en un sitio estático los archivos HTML se obtienen del directorio local del servidor Web. Al ceder la administración del contenido a la base de datos, la velocidad de acceso a la página se ve afectada, pero también dispone de herramientas de persistencia, selección y organización mucho más completas, las utilizadas desde el núcleo de WordPress. Y aquí es donde aparece la informática básica: al añadir una nueva capa de abstracción más lenta que la inmediatamente anterior, se puede incluir un mecanismo de almacenamiento en caché para mejorar el tiempo de acceso medio. Imagine que el almacenamiento en caché es una secuencia de métodos de acceso que comienza en el lado del usuario y retrocede hasta llegar a la base de datos MySQL. En cada punto de la secuencia se pueden realizar ciertas tareas de mantenimiento en caché y configuración; no obstante, como todas las tareas de ajuste de rendimiento, depende de los patrones de acceso, de los tipos de contenido y de la carga de trabajo transferida en ese punto del sistema.
A continuación se mostrara una vista de la jerarquía de almacenamiento en caché de WordPress.
- Navegador: Gran parte del rendimiento de los navegadores de sus usuarios finales se obtiene a través del código CSS optimizado, gráficos y bibliotecas de JavaScript.
- Servidor Web: WordPress y sus plugins se crean básicamente en PHP, un lenguaje interpretado que depende del servidor Web como contenedor de ejecución. Al mejorar el almacenamiento en caché de PHP en el servidor Web, se aceleran fases de la comunicación entre los usuarios y la base de datos de WordPress.
- Núcleo de WordPress: Los objetos de almacenamiento en caché utilizados por WordPress generan una caché de resultados de base de datos, el mismo enfoque adoptado por sitios altamente escalables basados en MySQL como Facebook. Al cambiar parte de la generación de páginas dinámicas a representación HTML estática, se acelera el acceso a las páginas, aunque puede haber cierta inconsistencia durante la actualización. Además, se pueden utilizar elementos transitorios para almacenar en caché datos externos o complejos para acelerar su recuperación.
- MySQL: El almacenamiento en caché de objetos en el nivel de la base de datos evita un posible acceso al disco y convierte las consultas en referencias de memoria siempre que sea posible. Estas opciones dependen de que se habilite un plugin de almacenamiento en caché en el núcleo de WordPress, y también suelen ser complementarias de dicho plugin.
Los beneficios de estos enfoques dependen de numerosos factores, como la capa de base de datos de su proveedor de alojamiento, si puede configurar personalmente servidores Web y de base de datos, del tamaño, frecuencia y complejidad de las consultas a la base de datos, y de la carga global de su instalación de WordPress.
Almacenamiento en caché y optimización del servidor web
Para mejorar la escalabilidad de WordPress a través del servidor Web, es necesario optimizar la ejecución de PHP y modificar la configuración del propio servidor. En ambos casos, necesitará acceso al administrador de los archivos de configuración del servidor.
Siempre tendrá que recurrir a consultas MySQL y al almacenamiento de objetos en caché, pero con independencia de cómo consiga la lista de páginas, WordPress se basa en PHP para confeccionar la página mostrada y generar su HTML. PHP es un lenguaje interpretado, lo que significa que por cada ejecución del código, es necesario interpretarlo y compilarlo en código máquina que se usará en el equipo. Esta metodología tiene sus ventajas e inconvenientes.
Almacenamiento en caché de objetos de WordPress
El objetivo del almacenamiento en caché del servidor Web es guardar en memoria archivos de acceso frecuente y fragmentos de código habituales para después ejecutarlos o hacer que estén disponibles. Desde WordPress, el almacenamiento en caché debe proporcionar una solicitud de una página sin tener que realizar accesos adicionales al código o a la base de datos, lo que básicamente consiste en ignorar el núcleo de PHP de WordPress y servir directamente una representación estática de la página.
El almacenamiento en caché conserva en memoria conjuntos de datos de uso frecuente. Es muy similar a la caché de elementos transitorios, pero mientras que los elementos transitorios los define personalmente el desarrollador, la caché de objetos la establece el núcleo de WordPress. La flexibilidad del almacenamiento en caché supone que cuando cambia determinada información, la caché no se ve afectada en su totalidad, sino que sólo se cambian los objetos de la misma. Sin embargo, el almacenamiento en caché obliga al plugin a ejecutar PHP para determinar qué aspectos de la caché siguen siendo válidos y también a WordPress a ejecutar el código PHP para obtener las partes de la página para su representación. Como ya hemos mencionado, la consecuencia es que la optimización del entorno PHP de su servidor Web y la activación del almacenamiento de objetos en WordPress son procesos prácticamente independientes.
En ocasiones, puede que su contenido sea lo suficientemente estático o se proporcione con la frecuencia adecuada como para evitar la sobrecarga de PHP y la caché de objetos, por ejemplo si su página aparece en los niveles superiores de Reddit y Slashdot. Para hacerlo, podría representarla como HTML estático y servirla directamente desde el servidor Web. Después de todo, para eso se ha diseñado el servidor.
En nuestra opinión, el mejor plugin para realizar esta tarea es WP-Super Cache de Donncha O Caoimh, se basa y mejora el plugin WP-Cache (que deberías probar sin duda alguna). WP-Super Cache dispone de varios modos de funcionamiento, como la escritura de archivos HTML estáticos. Sin embargo para dichos archivos requiere mod_rewrite, por lo que sólo funcionará en servidores apache.
WP-Super Cache cuenta con un completo panel de control desde el que ajustar las opciones para satisfacer necesidades concretas. Dispone incluso de un modo de bloqueo total previsto para incrementos elevados de trafico.
Sin embargo en el repositorio de plugins de WordPress existen otros plugins de caché que se pueden ajustar a tus necesidades.