Cómo optimizar la caché de Moodle

Optimizar la caché de Moodle implica elegir dónde se almacenan distintos tipos de datos y comprobar que el cambio realmente reduzca el trabajo de PHP, base de datos y disco. Moodle incluye Moodle Universal Cache (MUC), pero la configuración ideal depende del número de usuarios, cursos, actividades, servidores y recursos disponibles.

Qué es Moodle Universal Cache

MUC permite que el núcleo y los plugins almacenen temporalmente información que sería costosa de calcular en cada solicitud. El desarrollador define qué tipo de caché necesita; el administrador decide qué almacén disponible utilizará esa definición.

Moodle distingue tres modos principales:

  • Application: datos compartidos por los usuarios y reutilizados entre solicitudes.
  • Session: datos asociados a la sesión de un usuario.
  • Request: datos que solo viven durante una solicitud PHP.

No todos los almacenes son adecuados para todos los modos. Moodle filtra las opciones compatibles en la interfaz y permite asignar almacenes específicos a definiciones concretas.

Cuándo alcanza la configuración predeterminada

Una instalación pequeña, alojada en un único servidor y con poca concurrencia puede funcionar correctamente con los almacenes predeterminados. Según la documentación de Moodle, normalmente se utiliza el sistema de archivos para cachés de aplicación, la sesión PHP para cachés de sesión y memoria estática para el modo request.

No instales Redis o Memcached solamente porque aparezcan en una guía. Un servicio externo consume memoria, necesita supervisión y puede introducir latencia si está remoto, saturado o mal configurado. Primero comprobá si la caché actual es realmente el cuello de botella.

Establecé una referencia antes de cambiar

Registrá tiempos de respuesta para la portada, acceso a cursos, actividades, cuestionarios y administración. Observá CPU, memoria, I/O, consultas de base de datos y usuarios concurrentes. Las pruebas deben incluir visitantes anónimos, alumnos y docentes porque no realizan las mismas operaciones.

Antes de modificar stores, sesiones o configuración de PHP, creá un backup completo del sitio. Incluí archivos, base de datos y el directorio de datos de Moodle según la arquitectura utilizada.

Dónde se configura la caché

Un administrador con los permisos correspondientes puede acceder a:

Administración del sitio → Plugins → Caché → Configuración

La pantalla muestra:

  • plugins de almacén instalados;
  • instancias configuradas y si están listas;
  • definiciones de caché conocidas;
  • asignaciones específicas;
  • almacenes predeterminados para cada modo.

Una marca de disponibilidad no garantiza que el store sea más rápido; solamente indica que cumple los requisitos básicos y puede conectarse. El beneficio debe demostrarse con mediciones.

Redis y Memcached: cuándo pueden ayudar

Los almacenes en memoria pueden ser útiles cuando el sistema de archivos es lento, la base de datos recibe muchas consultas repetitivas o existen numerosos usuarios concurrentes. También son importantes en arquitecturas con varios servidores web, donde determinadas cachés de aplicación deben compartirse.

Antes de configurarlos verificá:

  • que el servicio esté disponible y protegido de accesos externos;
  • que PHP tenga la extensión compatible;
  • que exista memoria suficiente y una política de expulsión apropiada;
  • que la latencia entre Moodle y el servicio sea baja;
  • que cada sitio utilice un prefijo o espacio separado;
  • que puedas monitorear uso, aciertos, fallos y expulsiones.

No mezcles sesiones y caché sin aislamiento

Si utilizás el mismo servicio para sesiones y MUC, separá correctamente ambos usos mediante instancias, bases lógicas o prefijos compatibles con la tecnología. Una purga de MUC no debe eliminar las sesiones activas: de lo contrario, todos los usuarios podrían quedar desconectados.

La documentación de Moodle advierte específicamente que una instancia de Memcached utilizada para sesiones no debe reutilizarse como MUC. En un sitio educativo, una desconexión masiva durante un examen puede ser más grave que una página algo más lenta.

Cómo configurar un nuevo almacén de forma segura

  1. Prepará el servicio y la extensión PHP fuera de Moodle.
  2. Ingresá a la configuración de caché y elegí Agregar instancia en el plugin correspondiente.
  3. Definí host, puerto, autenticación, cifrado, prefijo y tiempos de espera según el entorno.
  4. Comprobá que la instancia aparezca como lista.
  5. Asignala primero a un grupo limitado de definiciones apropiadas.
  6. Probá navegación, inicio de sesión, cursos, cuestionarios y tareas programadas.
  7. Medí nuevamente antes de ampliar la asignación.

Evitar una migración total de una sola vez facilita volver atrás y permite identificar qué definiciones obtienen un beneficio real.

Elegí las asignaciones según el tipo de caché

Las cachés de configuración y metadata de base de datos se consultan con frecuencia y suelen beneficiarse de un almacén rápido. Otras pueden ser grandes, poco utilizadas o requerir almacenamiento compartido. La pantalla de definiciones indica modo, componente, área y asignaciones; utilizá esa información en vez de enviar todo al mismo store.

Mapear varios almacenes en cadena puede ofrecer redundancia, pero también añade operaciones y latencia. No agregues un segundo nivel si el primero retiene correctamente los datos y no existe una necesidad concreta.

Instalaciones con varios servidores

En una arquitectura con varios frontales web, las cachés que deben ser coherentes entre nodos necesitan un almacén compartido. Una caché local puede devolver resultados distintos según el servidor que atienda la solicitud.

Las sesiones también deben compartirse, salvo que el balanceador garantice afinidad de sesión. Diseñá esta arquitectura antes de mover stores: cambiar una caché aislada sin considerar sesiones, archivos y tareas puede generar errores intermitentes difíciles de reproducir.

Cómo medir el uso de MUC

La pantalla Administración del sitio → Plugins → Caché → Uso de caché permite observar stores y estimaciones de tamaño. En sistemas con varios nodos, la información de stores locales puede corresponder solamente al servidor que respondió la página.

Activá temporalmente la información de rendimiento cuando necesites confirmar qué almacenes se utilizan, y retirala luego de diagnosticar para no exponer datos técnicos ni añadir trabajo innecesario. Compará aciertos, tiempos, memoria y carga general; una tasa alta de aciertos no es suficiente si el store responde lentamente.

La caché no corrige todos los problemas de Moodle

Si el sitio continúa lento, revisá también:

  • una versión soportada de Moodle y PHP;
  • OPcache habilitado y con capacidad suficiente;
  • plugins y temas no utilizados o ineficientes;
  • consultas lentas y tamaño de las tablas;
  • cron, tareas programadas y colas pendientes;
  • antivirus, copias y procesos externos;
  • disco, CPU, memoria y concurrencia del plan;
  • imágenes, videos y actividades excesivamente pesadas.

Podés complementar el diagnóstico con las guías para optimizar MySQL, programar Cron Jobs en cPanel y reducir el consumo de CPU y memoria.

Cuándo purgar la caché

Una purga puede ser necesaria después de actualizaciones, despliegues o cambios que no se reflejen correctamente. No debe utilizarse como una tarea automática frecuente para “mantener Moodle rápido”. Después de vaciarla, las primeras solicitudes deben reconstruir datos y pueden consumir más recursos.

Si la purga parece solucionar temporalmente la lentitud, investigá qué store crece, qué definición se invalida incorrectamente o qué plugin genera datos excesivos. Repetir la purga oculta la causa.

Lista de comprobación

  1. Generá un backup y medí el rendimiento inicial.
  2. Comprobá versiones de Moodle, PHP y extensiones.
  3. Revisá stores, definiciones y asignaciones actuales.
  4. Instalá Redis o Memcached solo si existe una necesidad demostrada.
  5. Separá sesiones y MUC.
  6. Mapeá inicialmente pocas definiciones compatibles.
  7. Probá distintos roles y actividades.
  8. Monitoreá tamaño, aciertos, fallos, memoria y latencia.
  9. Documentá el cambio y conservá un procedimiento para revertirlo.

La documentación oficial explica el funcionamiento de Moodle Universal Cache y sus almacenes, la pantalla de uso de caché y la Cache API de Moodle. Consultá la documentación correspondiente a tu versión y validá cada ajuste con carga representativa antes de aplicarlo de forma general.