Optimizar Drupal requiere observar varias capas: el sistema de caché del CMS, PHP, base de datos, módulos, cron, archivos estáticos y recursos del servidor. Activar una opción aislada puede mejorar una página, pero no necesariamente resuelve el problema que afecta a usuarios autenticados, búsquedas, formularios o tareas de administración.
Medí antes de modificar
Elegí páginas representativas y registrá el tiempo de respuesta, el peso transferido y el consumo de CPU y memoria. Probá la portada, una página con Views, un formulario, una búsqueda y alguna pantalla utilizada por usuarios autenticados.
Drupal distingue el contenido que puede compartirse entre visitantes anónimos del que varía por usuario, permisos, idioma u otros contextos. Por eso una prueba realizada solamente desde una ventana privada no describe necesariamente el rendimiento de todo el sitio.
Antes de actualizar Drupal, PHP, módulos o configuración, creá un backup completo de archivos y base de datos. Si el sitio es comercial o recibe tráfico constante, probá primero en una copia de desarrollo.
Usá una versión soportada de Drupal
Mantené el núcleo, los módulos y el tema dentro de ramas con soporte. Drupal 7 finalizó su soporte oficial, por lo que conservarlo en producción implica riesgos de seguridad y compatibilidad. Una migración mayor requiere planificación: no debe tratarse como una actualización menor ni realizarse sin verificar los módulos utilizados.
La versión de PHP debe ser compatible con la edición de Drupal instalada. En cPanel podés cambiar la versión de PHP de un dominio, pero primero verificá los requisitos del núcleo y de los módulos. OPcache debe permanecer habilitado en producción cuando esté disponible, porque evita recompilar los mismos archivos PHP en cada solicitud.
Comprendé las capas de caché de Drupal
Las versiones modernas de Drupal incorporan distintas capas que trabajan juntas:
- Internal Page Cache: acelera páginas para visitantes anónimos cuando la respuesta puede almacenarse.
- Dynamic Page Cache: reutiliza partes de páginas aunque otras deban variar según el usuario o el contexto.
- Render Cache: almacena resultados de elementos renderizados para evitar reconstruirlos en cada solicitud.
- Cache tags, contexts y max-age: indican cuándo invalidar un resultado, para qué variantes es válido y durante cuánto tiempo puede utilizarse.
Esta metadata permite invalidar solamente lo relacionado con un contenido modificado, en vez de vaciar toda la caché. Los módulos personalizados deben respetarla; si omiten etiquetas o contextos, pueden mostrar datos desactualizados o información destinada a otro contexto.
Configuración de rendimiento
La pantalla Configuración → Desarrollo → Rendimiento, normalmente disponible en /admin/config/development/performance, permite limpiar cachés y configurar opciones como la agregación de CSS y JavaScript. En producción, la agregación suele reducir solicitudes y tamaño, pero debe probarse después de actualizar el tema o los módulos.
No desactives las cachés de renderizado, página o Twig para intentar solucionar una lentitud en producción. Las opciones de desarrollo sirven para programar y depurar; dejarlas activas puede multiplicar el trabajo de PHP y la base de datos. Después de un despliegue puede ser necesario reconstruir la caché una vez, pero vaciarla continuamente elimina el beneficio.
Revisá Views, módulos y bloques
Una vista que consulta miles de registros, ordena por columnas sin índices o carga entidades completas puede dominar el tiempo de respuesta. Revisá filtros, paginación, relaciones y campos. Cuando el contenido lo permita, utilizá la caché propia de Views para el resultado de la consulta o la salida renderizada.
Desinstalá módulos que ya no sean necesarios y verificá especialmente los que realizan llamadas externas, generan estadísticas en tiempo real o se ejecutan en todas las páginas. Deshabilitar un módulo no siempre elimina sus tablas o configuración; seguí su procedimiento de desinstalación y realizá un backup antes.
Los bloques personalizados también necesitan metadata de caché correcta. Si un bloque muestra contenido distinto por usuario, debe variar por el contexto adecuado; marcarlo sin caché puede hacer que toda la página sea más costosa de lo necesario.
Base de datos: buscá consultas concretas
No optimices MySQL con valores copiados de otro servidor. Revisá consultas lentas, tablas grandes, índices y operaciones repetitivas. La guía para optimizar una base de datos MySQL de forma segura explica cómo utilizar mediciones, EXPLAIN, ANALYZE y mantenimiento sin aplicar recetas genéricas.
Una caché externa como Redis puede descargar trabajo de la base de datos en instalaciones exigentes, pero requiere integración compatible, memoria disponible y seguimiento de aciertos, fallos y expulsiones. En un sitio pequeño, agregar un servicio mal dimensionado puede introducir latencia o un nuevo punto de falla.
Cron, colas y tareas pendientes
Drupal utiliza cron para mantenimiento, indexación y tareas de módulos. Una frecuencia demasiado baja acumula trabajo; ejecutarlo con demasiada frecuencia puede superponer procesos pesados. Revisá cuánto tarda cada ejecución y evitá que dos instancias se ejecuten simultáneamente.
En cPanel podés utilizar Cron Jobs para programar tareas. Elegí una frecuencia acorde al sitio, distribuí backups e importaciones en otros horarios y comprobá los registros cuando aparezcan picos periódicos de consumo.
Imágenes, CSS, JavaScript y fuentes
La caché del servidor no reduce por sí sola una imagen excesiva ni una biblioteca descargada desde un tercero. Ajustá las dimensiones, utilizá formatos apropiados y aplicá carga diferida cuando corresponda. Eliminá bibliotecas duplicadas y verificá que cada página cargue solamente los recursos que necesita.
Después de activar la agregación de CSS o JavaScript, probá menús, formularios, editores, carruseles y dispositivos móviles. Si algo falla, identificá el recurso responsable antes de desactivar toda la optimización.
CDN y caché externa
Una red CDN puede servir imágenes y archivos estáticos desde ubicaciones cercanas al visitante. El HTML requiere más cuidado: excluí administración, autenticación, formularios y respuestas personalizadas. Drupal ya dispone de información de cacheabilidad; una regla externa demasiado amplia puede ignorarla y entregar una página incorrecta.
Si utilizás Cloudflare, revisá que las reglas no almacenen páginas de usuarios autenticados y purgá solo las URL necesarias después de cambios importantes. La caché externa complementa a Drupal, no reemplaza sus mecanismos internos.
Cómo interpretar la lentitud
- Solo visitantes anónimos: comprobá Internal Page Cache, cabeceras HTTP y reglas del proxy.
- Solo usuarios autenticados: revisá Dynamic Page Cache, permisos, bloques personalizados y consultas específicas.
- Una vista determinada: analizá su consulta, filtros, paginación y caché.
- Picos regulares: investigá cron, colas, indexación, backups e importaciones.
- Frontend lento con respuesta inicial rápida: optimizá imágenes, CSS, JavaScript y servicios externos.
- Errores por recursos: utilizá nuestra guía para reducir CPU y memoria antes de aumentar límites sin diagnóstico.
Procedimiento recomendado
- Generá un backup y registrá métricas iniciales.
- Comprobá soporte y compatibilidad de Drupal, PHP, módulos y tema.
- Mantené activas las cachés de producción y la metadata correcta.
- Revisá Views, bloques y módulos costosos.
- Analizá consultas y tareas programadas.
- Reducí el peso del frontend.
- Realizá un cambio por vez y volvé a medir.
La documentación oficial describe la Cache API de Drupal, el funcionamiento de Internal Page Cache y por qué las opciones para desactivar cachés pertenecen al entorno de desarrollo. Consultá siempre la documentación de la rama instalada antes de modificar producción.