La caché, las imágenes optimizadas, una versión moderna de PHP y la eliminación de extensiones innecesarias pueden reducir considerablemente el tiempo de carga de Joomla
Una página web lenta no solamente resulta incómoda para sus visitantes. También puede reducir el número de páginas consultadas, perjudicar las conversiones y dificultar el posicionamiento en los buscadores.
Joomla puede ofrecer un rendimiento excelente, pero una instalación que acumule extensiones, imágenes pesadas y consultas innecesarias terminará respondiendo con lentitud. La solución no consiste en instalar indiscriminadamente más complementos de optimización, sino en localizar el verdadero cuello de botella.
Antes de realizar cambios importantes debemos crear una copia de seguridad completa de los archivos y de la base de datos. También conviene medir el rendimiento inicial para poder comprobar si cada modificación mejora realmente la web.
1. Medir antes de comenzar
No podemos optimizar correctamente una página si desconocemos qué está provocando la lentitud.
Podemos comenzar analizando varias páginas mediante herramientas como:
- PageSpeed Insights.
- Lighthouse, incluido en las herramientas para desarrolladores del navegador.
- WebPageTest.
- GTmetrix.
- La pestaña Red de Firefox o Chromium.
No debemos probar únicamente la portada. También es recomendable analizar un artículo, una página de categoría, el formulario de contacto y, si existe, la tienda.
Entre los datos más importantes se encuentran:
- Tiempo de respuesta inicial del servidor.
- Tamaño total de la página.
- Número de solicitudes.
- Imágenes más pesadas.
- Archivos JavaScript que bloquean la visualización.
- Desplazamientos inesperados del contenido.
- Tiempo necesario para mostrar el elemento principal.
Si el servidor tarda demasiado en comenzar a responder, el problema puede encontrarse en PHP, la base de datos, una extensión o el propio alojamiento. Si la respuesta inicial es rápida, pero la página tarda en mostrarse, tendremos que revisar imágenes, estilos, scripts y fuentes.
2. Mantener Joomla y sus extensiones actualizados
Las nuevas versiones de Joomla suelen incorporar correcciones de errores, mejoras de seguridad y cambios de rendimiento.
También debemos mantener actualizados:
- La plantilla.
- Los componentes.
- Los módulos.
- Los plugins.
- El idioma.
- La versión de PHP compatible.
Antes de actualizar una web en producción es recomendable probar los cambios en una copia o entorno de ensayo. Una extensión antigua puede dejar de funcionar al cambiar de Joomla o PHP.
Mantener software desactualizado para conservar una extensión abandonada suele convertirse en un problema creciente de seguridad y rendimiento.
3. Utilizar una versión moderna de PHP
PHP interpreta gran parte del código utilizado por Joomla. Una versión moderna y compatible puede ejecutar las solicitudes de manera más eficiente que otra antigua.
En Joomla 6, la versión recomendada actualmente es PHP 8.4, mientras que PHP 8.3 se mantiene entre las versiones admitidas. No debemos cambiar PHP sin comprobar antes la compatibilidad de todas las extensiones instaladas.
En Plesk podemos seleccionar la versión desde:
Sitios web y dominios → Configuración de PHP
Después del cambio comprobaremos tanto la parte pública como la administración, prestando atención a formularios, búsquedas, envío de correos y componentes de terceros.
También es aconsejable mantener activado OPcache. Esta función conserva en memoria el código PHP ya compilado y evita repetir parte del trabajo en cada petición.
Podemos comprobar su estado creando temporalmente un archivo con:
<?php phpinfo();
Una vez realizada la consulta, debemos eliminar inmediatamente ese archivo porque muestra información detallada sobre la configuración del servidor.
4. Activar correctamente la caché de Joomla
Joomla dispone de varios mecanismos de caché y no todos funcionan de la misma manera.
En:
Sistema → Configuración global → Sistema → Configuración de la caché
podemos activar la caché conservadora o progresiva.
La caché conservadora permite controlar mejor qué módulos se almacenan y suele ser una elección prudente para comenzar. La progresiva almacena conjuntamente los módulos mostrados en una página y puede resultar más agresiva.
Joomla no aplica estos mecanismos de caché a los usuarios que han iniciado sesión. Esto evita servir a una persona contenidos generados para otra con permisos diferentes.
También existe el plugin:
Sistema - Caché de página
Este guarda el HTML completo de cada página para entregarlo sin volver a generarlo. Puede acelerar mucho una web informativa visitada principalmente por usuarios anónimos.
Sin embargo, no debe activarse a ciegas en páginas que contengan:
- Carritos de compra.
- Sesiones de usuario.
- Formularios con elementos dinámicos.
- Contenido personalizado.
- Información diferente según cookies.
- Resultados que cambian constantemente.
El plugin permite excluir elementos de menú y determinadas direcciones. Después de activarlo debemos probar cuidadosamente la web en una ventana privada del navegador.
Cuando modifiquemos contenido y continuemos viendo la versión antigua, podremos eliminar la caché desde:
Sistema → Limpiar caché
5. Habilitar la compresión
Los documentos HTML, CSS y JavaScript pueden comprimirse antes de enviarse al navegador. Esto reduce la cantidad de datos transferidos y acelera especialmente las conexiones más lentas.
Joomla ofrece la opción:
Sistema → Configuración global → Servidor → Compresión Gzip
También podemos configurar la compresión directamente en Apache, Nginx o el panel de alojamiento. Los servidores modernos pueden utilizar Gzip y, en determinadas configuraciones, Brotli.
No debemos activar opciones al azar en varios niveles. Lo importante es comprobar que el servidor responde con una cabecera como:
Content-Encoding: gzip
o:
Content-Encoding: br
Podemos verificarlo mediante:
curl -I --compressed https://www.ejemplo.com/
Si después de activar la compresión aparecen páginas en blanco, descargas dañadas o errores, tendremos que revisar si el servidor ya estaba comprimiendo las respuestas.
6. Optimizar las imágenes antes de subirlas
Las imágenes suelen representar la mayor parte del peso de una página.
Una fotografía tomada con un teléfono puede medir varios miles de píxeles y ocupar más de 5 MB. Si el espacio disponible en el artículo solamente muestra 800 píxeles de ancho, no tiene sentido servir el archivo original.
Antes de subir una imagen debemos:
- Recortarla con la proporción necesaria.
- Reducirla a unas dimensiones razonables.
- Eliminar metadatos innecesarios.
- Aplicar compresión.
- Utilizar WebP o AVIF cuando sea posible.
- Conservar JPEG o PNG solamente cuando resulte apropiado.
En Linux podemos optimizar imágenes JPEG con:
jpegoptim --strip-all --max=85 imagen.jpg
Para archivos PNG:
optipng -o7 imagen.png
Una imagen de portada correctamente preparada puede pasar de varios megabytes a menos de 200 KB sin una pérdida visual importante.
La plantilla también debería generar imágenes adaptadas a diferentes tamaños de pantalla mediante srcset, evitando enviar a un teléfono la misma imagen enorme destinada a un monitor.
7. Utilizar la carga diferida con sentido
La carga diferida o lazy loading retrasa la descarga de imágenes e iframes que todavía no aparecen en la pantalla.
En HTML puede indicarse mediante:
<img src="/imagen.jpg" loading="lazy" alt="Descripción de la imagen">
No obstante, la imagen principal visible al abrir la página normalmente no debería cargarse de manera diferida. Retrasarla puede empeorar la métrica que mide cuándo aparece el contenido principal.
La regla práctica sería:
- Imagen principal: carga normal y prioritaria.
- Imágenes situadas más abajo: carga diferida.
- Iframes y vídeos fuera de pantalla: carga diferida.
- Logotipos y elementos necesarios para el diseño inicial: estudiar cada caso.
Muchas plantillas y extensiones modernas ya incorporan esta función, por lo que antes de instalar un plugin adicional debemos revisar el código generado.
8. Eliminar extensiones y módulos innecesarios
Cada extensión puede añadir consultas a la base de datos, archivos CSS, JavaScript, eventos de Joomla y procesos ejecutados en todas las páginas.
Despublicar un módulo no siempre elimina todo el trabajo asociado al componente o plugin que lo acompaña. Si una extensión ya no se utiliza, lo mejor suele ser desinstalarla después de realizar una copia de seguridad.
Debemos prestar especial atención a:
- Constructores visuales muy pesados.
- Extensiones de estadísticas internas.
- Plugins sociales que contactan con múltiples servicios externos.
- Carruseles con muchas imágenes.
- Sistemas de chat.
- Fuentes e iconos cargados desde terceros.
- Plugins duplicados que realizan la misma función.
- Extensiones abandonadas por sus desarrolladores.
No conviene eliminar directamente carpetas o tablas de la base de datos. Las extensiones deben desinstalarse desde la administración de Joomla para que puedan ejecutar su procedimiento de limpieza.
9. Revisar la plantilla
Una plantilla visualmente atractiva puede cargar cientos de kilobytes de estilos, bibliotecas completas de iconos y numerosos scripts aunque solamente utilicemos una pequeña parte.
Una plantilla eficiente debería:
- Adaptarse correctamente a dispositivos móviles.
- Evitar bibliotecas innecesarias.
- Cargar los archivos solamente donde se utilizan.
- Reservar espacio para imágenes y anuncios.
- Permitir desactivar funciones no utilizadas.
- Generar un HTML razonablemente limpio.
- Ser compatible con las versiones actuales de Joomla y PHP.
También debemos revisar los módulos publicados en posiciones invisibles. Algunas plantillas conservan módulos asociados a dispositivos o páginas que ya no utilizamos.
Cambiar de plantilla no siempre es necesario. En muchas ocasiones basta con desactivar animaciones, fuentes, iconos y efectos que no aportan un valor real.
10. Reducir CSS y JavaScript sin romper la web
La minificación elimina espacios, comentarios y otros caracteres innecesarios. Puede reducir el tamaño de los archivos CSS y JavaScript, pero no resuelve por sí sola todos los problemas.
Combinar todos los archivos en uno tampoco es siempre beneficioso. Con HTTP/2 y HTTP/3, el navegador puede solicitar varios recursos simultáneamente, y un archivo gigantesco puede obligarlo a descargar código que no necesita.
Después de aplicar cualquier optimización debemos comprobar:
- Menús desplegables.
- Formularios.
- Ventanas emergentes.
- Galerías.
- Cookies y consentimiento.
- Encuestas.
- Comentarios.
- Administración.
- Visualización móvil.
Si JavaScript se carga en un orden incorrecto, una parte de la web puede dejar de funcionar sin mostrar un error evidente.
Es preferible aplicar los cambios uno por uno y limpiar todas las capas de caché después de cada prueba.
11. Optimizar la base de datos
Joomla almacena artículos, configuraciones, usuarios, sesiones y datos de extensiones en la base de datos.
Con el paso del tiempo pueden acumularse:
- Sesiones antiguas.
- Registros de extensiones desinstaladas.
- Historiales de versiones.
- Datos temporales.
- Registros de actividad excesivos.
- Tablas grandes pertenecientes a componentes abandonados.
Antes de modificar la base de datos debemos realizar una copia de seguridad.
En MySQL o MariaDB podemos consultar las tablas más grandes mediante herramientas como phpMyAdmin, Adminer o la consola. También podemos ejecutar una optimización convencional:
mysqlcheck -u usuario -p --optimize nombre_base_datos
Este comando no sustituye un análisis. Si una tabla crece constantemente, debemos descubrir qué extensión la alimenta y establecer una política de conservación.
No se deben borrar registros o tablas solamente porque su nombre parezca antiguo. Algunas extensiones conservan dependencias que no resultan evidentes.
12. Revisar el servidor y el alojamiento
Si Joomla continúa siendo lento después de optimizar la aplicación, el cuello de botella puede encontrarse en el servidor.
Debemos revisar:
- Uso de CPU y memoria.
- Saturación del almacenamiento.
- Procesos PHP-FPM.
- Límite de trabajadores PHP.
- Consultas lentas de MariaDB o MySQL.
- OPcache.
- Espacio disponible.
- Errores en los registros.
- Latencia de servicios externos.
- Restricciones del alojamiento compartido.
Un CDN puede mejorar la entrega de imágenes, estilos y scripts a usuarios alejados geográficamente. También puede filtrar tráfico malicioso y almacenar contenido estático cerca del visitante.
Sin embargo, un CDN no corrige un componente que tarda varios segundos en ejecutar consultas. Si el tiempo de respuesta del servidor es elevado incluso desde una ubicación cercana, primero debemos optimizar Joomla, PHP y la base de datos.
No instalar diez optimizadores para solucionar un problema
Uno de los errores más frecuentes consiste en instalar varias extensiones de rendimiento a la vez. Cada una intenta combinar archivos, modificar la caché o alterar el orden de JavaScript, haciendo mucho más difícil descubrir el origen de una avería.
El procedimiento más seguro es:
- Crear una copia de seguridad.
- Medir el estado inicial.
- Realizar un solo cambio.
- Limpiar la caché de Joomla, el servidor, el CDN y el navegador.
- Repetir las mediciones.
- Comprobar las funciones principales.
- Conservar únicamente los cambios que aporten una mejora verificable.
Una puntuación perfecta en PageSpeed no debe ser el único objetivo. Una web real contiene publicidad, analítica, formularios y otras funciones necesarias.
Lo importante es que la página responda con rapidez, mantenga su estabilidad visual y permita al visitante acceder al contenido sin esperas innecesarias.
