Haz Joomla 4 más rápido

Puesta a punto del rendimiento de Joomla 4 - Parte I

Joomla 4 es una gran mejora sobre Joomla 3. Nada más instalarlo consigues un CMS muy rápido con soporte integrado para datos estructurados (lo que antiguamente eran llamados "micro datos"), incluso varias opciones de caché para atender cualquier uso, desde ligeros sitios personales hasta enormes y concurridos portales.

Por razones que tienen que ver con sus antiguas versiones, todavía tiene la injustificada mala reputación de ser un CMS lento y malo para el SEO. Esto no puede estar más lejos de la realidad. De hecho, Joomla 4, sin ningún tipo de programa externo, supera a sus competidores incluso cuando son ayudados por programas externos construidos específicamente para ello.

En esta serie de artículos discutiremos cómo puedes afinar Joomla 4 para mejorar su rendimiento aún más y cómo evitar todos los obstáculos cuando construyes tu sitio web o el de tus clientes. El resultado final será un sitio que atraerá tanto a motores de búsqueda como a visitantes de los que viven y respiran.

Esta serie de cinco partes es una actualización a la serie dedicada a la mejora de rendimiento de Joomla 3 publicada el año pasado. Estoy contento de poder compartir esta serie con la comunidad de Joomla a través de Magazine de la comunidad de Joomla. ¡Muchas gracias a los maravillosos voluntarios que han hecho esto posible!

En esta primera parte de la serie hablaremos sobre por qué esto es importante, en general, y cuáles son los primeros pasos obvios que puedes dar para conseguir ese objetivo.

 

¿Por qué necesitas un sitio web rápido?

Antes de embarcarnos en nuestra aventura de optimizar el rendimiento de tu sitio Joomla, necesitamos abordar la cuestión más básica: ¿por qué es importante? Después de todo, estamos hablando que tendrás que hacer más trabajo antes de proclamar que tu sitio está preparado para publicarse. ¿Realmente merece la pena el esfuerzo, incluso si tu sitio ya atrae una cantidad decente de tráfico orgánico y lo notas rápido?

Creo firmemente que el tiempo empleado merece la pena, tanto por razones filosóficas como prácticas.

La primera razón filosófica es que un sitio lento es ineficiente en muchos niveles. Desperdicia el tiempo de todo el mundo. Esperar 4-5 segundos para que cargue una página puede no sonar como una gran pérdida, pero en el trancurso de un año y cientos o miles de páginas que cada uno de nosotros está esperando que carguen estamos colectivamente desperdiciando años-persona de nuestro tiempo. Todo el tiempo derrochamos la electricidad necesaria para generar ese contenido más lentamente de lo necesario, entregar más datos de los que deberíamos y procesarlo más lento conlleva aumentar la huella medioambiental de tu sitio.

La segunda razón filosófica es que los sitios lentos son exclusivos. Son más difíciles de alcanzar por comunidades desatendidas que dependen de conexiones a Internet lentas o de alta latencia. Ya sea que el Internet por satélite es el único enlace viable al mundo exterior en un pueblo africano o la débil conexión WiFi en un aparcamiento de Taco Bell en un distrito escolar pobre de los EEEUU, un sitio lento podría estar creando una barrera intangible pero muy real entre tus contenidos y la gente que podría consumirlos y beneficiarse de ellos. Sólo porque la mayoría de nosotros somos lo suficientemente privilegiados para vivir en centros urbanos de países desarrollados con conexiones a Internet rápidas y de baja latencia, no significa que debamos actuar como guardianes de la información por omisión de hacer algo relativamente sencillo para incrementar el alcance de esa información. Esto es especialmente importante si desarrollas sitios web sin ánimo de lucro, educativos, gubernamentales u otros recursos.

En cuanto a las razones prácticas, comencemos con el problema obvio de que un sitio lento crea una experiencia frustrante para los visitantes. Es probable que abandonen tu sitio y visiten el de otra persona. Si se quedan, es probable que tengan un estado de ánimo negativo después de haber sufrido una serie de retrasos largos e innecesarios. Esto debilita y penaliza el contenido de tu sitio, desalienta repetir visitas y reduce tu tasa de conversión.

La segunda y más importante razón práctica es que los motores de búsqueda ya no califican tu sitio solamente basándose en el contenido y la conexión a otros sitios. Ahora tienen en cuenta los "Core Web Vitals". Básicamente, un sitio que está inflado o es lento será penalizado en las clasificaciones de los motores de búsqueda. Es tu mayor interés tener un sitio rápido incluso si no te preocupas acerca de su impacto social y ambiental.

 

Supuestos de funcionamiento

La mayoría de artículos que hayas podido leer acerca de la optimización web tienden a ser axiomáticos. Pretenden que existe algo así como el Camino Único y Verdadero y que serás condenado eternamente si no lo sigues. La ironía de que haya tantos puntos de vista axiomáticos mutumente excluyentes como personas escribiendo artículos aparentemente ha eludido a estos autores.

No hay ningún Camino Único y Verdadero. Incluso insinuar que un sitio web pequeño construido por una persona en su tiempo libre puede o, peor aún, debería seguir la misma metodología que un sitio entre mediano y grande que ha sido construido y está siendo mantenido por un equipo dedicado de al menos unas pocas docenas de personas está alejado de la realidad.

Escribo esta serie de artículos teniendo en mente a la mayoría de integradores de sitios que utilizan Joomla, construyendo sitios sólos o como parte de un pequeño equipo, con las restricciones de tiempo y de presupesto impuestas por sus clientes. La mayor parte de vosotros estáis construyendo sitios pequeños o medianos para pequeñas y medianas empresas o incluso pequeñas tiendas de negocios familiares. No podéis permitiros el lujo de estar obsesionados con lograr una "puntuación perfecta". Ese es el objetivo casi inalcanzable, no la expectativa pragmática para todos y cada uno de los sitios. Sí, podríais conseguir una puntuación perfecta pero si eso significa que vuestro sitio es un dolor de cabeza para construir y mantener, ¿eso es algo realmente positivo o inconscientemente ha colocado tu nombre en la lista de nominados de los Premios Darwin?

Deberías optimizar tan solo aquello que puedes afrontar. Tienes fechas de entrega que cumplir y, francamente, algunas de las optimizaciones podrían simplemente ocupar una desproporcionada cantidad de tu tiempo a cambio de unas ganancias marginales. Comienza de forma sencilla y profundiza solamente dependiendo de los plazos y el presupuesto de tu cliente.

Este es el contexto de esta serie de artículos. No es axiomático, es práctico. Presentaré varias maneras en que puedes optimizar sitios del mundo real con un término medio razonable entre ganancias de rendimiento total y facilidad de mantenimiento. Estos no son enfoques de laboratorio, que funcionan estupendamente en teoría pero que en la práctica requieren muchos más recursos que los disponibles de forma realista para la mayoría de nuestros lectores.

Míralo desde otro punto de vista. Sí, siempre puedes crear una aplicación respaldada por microservicios y por un CDN si te apetece. O utilizar aglunas técnicas realmente avanzadas que evitan una plétora de limitaciones impuestas por el enfoque "talla única" al usar un CMS como Joomla (o Wordpress, o Drupal...) en lugar de construir tu propia aplicación personalizada. Pero no estoy aquí para decirte por qué o cómo no usar un CMS. Estoy aquí para contarte como puedes usar de manera óptima el CMS que tienes para conseguir mejores resultados a los que antes no sabías como acercarte. Estas son todas las técnicas que he practicado en mis sitios ¡y han funcionado de maravilla!

 

Lo absolutamente "obvio"

Cuando has estado usando Joomla desde que era llamado Mambo allá por 2004, como tu seguro servidor, hay algunas verdades básicas acerca de como abordar la construcción de sitios que parecen bastante obvias. Esta es la cuestión. Nada es realmente "obvio"; todo es cuestión de experiencia.

En el pasado pensaba que la gente debía estar loca por no ver algunos puntos que eran dolorosamente obvios para mí. Eventualmente me di cuenta que yo tengo una experiencia única de haber estado en la parte trasera de incontables sitios y que he reunido un conjunto de habilidades a lo largo de una extensa carrera... Lo siento, me equivoqué de película. Lo que quiero decir es que me di cuenta que lo que es obvio para mí puede parecer magia arcana para alguien que está comenzando o que está acostumbrado a hacer las cosas de una manera diferente a la mía. La verdad sea dicha, si pudiera alcanzarme mí mismo de hace 16 años probablemente me daría una bofetada por hacer cosas que aprendí por las malas en un momento posterior que no tenían sentido o que me estaban perjudicando en el largo plazo.

Voy a tratar los tres errores más comunes que he visto en sitios web y como arreglarlos fácilmente. Hey, ¡algunos de ellos ni siquiera están relacionados con Joomla!

 

Hosting

El error más común que veo es que la gente elija un hosting barato y compartido, y después se quejan de que su sitio Joomla es lento. Sí, su sitio es lento pero Joomla no es la causa. El hosting que eliges para tu sitio es crucial. ¡No intentes ahorrar unos céntimos aquí!

¿Alguna vez te has preguntado porque un proveedor de alojamiento barato ofrece un precio en el rango de menos de 3$ al mes mientras un proveedor de buena calidad carga un precio entre cinco y diez veces más grande por un hosting compartido con las mismas o supuestamente menores especificaciones? La diferencia es que el proveedor barato intenta apiñar más sitios en un único servidor físico y mantiene los costes bajos utilizando CPUs, memoria y discos duros mecánicos más lentos, además de conexión a Internet más limitada. Todas estas circunstancias conspiran para hacer tu sitio apreciablemente más lento para comenzar. Ninguna cantidad de ajustes puede salvarte cuando comienzas con un mal hosting.

Piensa en ello de esta forma. Tú puedes construir un coche tan aerodinámico como un avión de combate. Si el motor que lleva es de un cilindro y dos tiempos de una motocicleta no ganará ningún record de velocidad. Probablemente será sobrepasado por alguien caminando a paso ligero. El motor de tu sitio web es tu entorno de hosting. Es el que dicta el rendimiento máximo que puedes extraer de él.

Intenta encontrar un equilibrio entre el rendimiento ideal y tu presupuesto razonable. En caso de duda, elige un proveedor de hosting compartido de gama media con una buena reputación y, posiblemente, vuelve a evaluar después de un par de meses con tráfico del mundo real. Si tus clientes deciden el hosting asegúrate de tener La Charla con ellos: explícales que, hagas lo que hagas, su elección de hosting limitará el rendimiento del sitio que construyes.

 

Plantillas prediseñadas

Mucha gente que construye sitios utiliza plantillas prediseñadas con una miríada de opciones, un framework genérico que intenta ser todo para todos, típicamente combinado con docenas de componentes, plugins y módulos para construir un sitio que realmente no es tan complejo si te paras a pensarlo.

Entiendo el atractivo, habiendo hecho eso yo mismo en el pasado. Te sientes empoderado para trastear con el diseño de tu sitio y probar diferentes opciones hasta que encuentras lo que se te queda grabado. Diría que debes hacerlo si sientes que es tu proceso creativo pero no necesariamente te quedes con la plantilla genérica y prediseñada una vez te has dado cuenta del aspecto que quieres para tu sitio. Si te sientes incómodo construyendo tu propia plantilla, seguro, una prediseñada es la única manera para ti pero ten en cuenta que te limitará en las métricas de rendimiento.

El problema objetivo es que una plantilla genérica está construida para la flexibilidad, no la rapidez. En mi experiencia tu carga de página (Time to First Byte - TTFB) puede incrementarse entre 1 a 3 segundos simplemente a causa de todo el equipaje que estás arrastrando contigo utilizando esta clase de plantilla. Una plantilla personalizada basada en Cassiopeia de Joomla 4 tiene un impacto insignificante, en el rango de una fracción de un milisegundo.

Incluso si te quedas a medio camino y sólo utilizas un framework de plantillas genérico todavía estás arrastrando un montón de código innecesario a menos que realmente sepas lo que estás haciendo. Sin mencionar que has instalado una cantidad sustancial de código PHP y Javascript que necesita ser mantenido regularmente por razones de seguridad.

Otro problema con las plantillas prediseñadas y los frameworks de plantillas es que tienden a cargar todo su CSS y Javascript en la cabecera de la salida de HTML lo que tiene un impacto adverso en tus Core Web Vitals, especialmente Firs Contentful Paint. Una plantilla personalizada basada en Cassiopeia irá cargando estos archivos estáticos diferidos, haciendo tu sitio mucho más rápido para mostrarse.

Si tienes las habilidades y el tiempo, estarías mejor creando tu propia plantilla. Esto parece aterrador, pero no lo es si ya eres un constructor experimentado de sitios Joomla y entiendes sus herramientas, básicas pero poderosas, como los overrides de plantilla. Puedes usar cualquier framework CSS que quieras y puedes comenzar creando una copia para modificar de la plantilla predeterminada de Joomla 4, Cassiopeia.

Yo no soy un desarrollador frontend, de ninguna manera. Me las he ingeniado para, fácilmente, tomar el diseño creado para mi sitio y "traducirlo" en una plantillas de Joomla 4 basada en Cassiopeia sin muchos problemas. Bootstrap 5, incluido en Joomla y que lo utiliza Cassiopeia, es extremadamente versátil. Lo único que necesitas entender para hacer cualquier tipo de presentación visual posible - ¡y responsive! - es CSS Flexbox

 

No exageres

Existe el viejo adagio de "sólo porque puedas no significa que debas". En el contexto de Joomla, ¡sólo porque puedas instalar cientos de extensiones no significa que debas!

Con más de 7000 extensiones en el directorio de extensiones de Joomla es bastante fácil pasarse de la raya e instalar todo lo que hay bajo el sol. Un plugin para esto, un módulo para aquello, un constructor de páginas en lugar de una simple modificación de plantilla... y antes de que te des cuenta tienes más de 300 extensiones de terceros cargando en cada página de tu sitio. Como puedes imaginar, esto ralentizaría cualquier sitio hasta hacerlo ir a paso de tortuga.

Hablemos de módulos. Mi observación casual es que el 90% de los módulos mostrados en el 90% de los sitios que he visitado o en los que he trabajado no tienen ninguna razón de ser. Nadie se preocupa sobre el tiempo en su ciudad; y si les preocupase, preguntarían a Google, Alexa o Siri en lugar de visitar tu sitio. Nadie se preocupa acerca de las tres docenas de botones, enlaces y banners al contenido que tienes en la barra lateral. La gente quiere una navegación intuitiva, no una guía telefónica. Incluso peor, los sitios de redes sociales han condicionado a tus visitantes para entrar en modo "ceguera de barra lateral y banner", es decir, ellos asumen que ese contenido es basura y que no necesitan preocuparse por ello. Los módulos pueden servir a un objetivo real pero úsalos con moderación. No intentes "llenar ese espacio vacío" con módulos inservibles.

Lo que nos lleva a los plugins, especialmente a los plugins de contenido y de sistema que buscan y reemplazan en el texto de toda la página. Los plugins de contenido se ejecutan cada vez que el contenido es mostrado en tu sitio. Necesitan hacer alguna clase de inicialización y alguna clas de reemplazamiento de texto. Estas operaciones llevan tiempo. Buscar y reemplazar en toda la página por los plugins de sistema, especialmente si usan expresiones regulares, lleva incluso más tiempo. ¿Realmente una búsqueda y reemplazamiento en cada página generada por tu  sitio es una solución mejor que las modificaciones de plantilla, las modificaciones de idioma o gastar algo de tiempo en cambiar el contenido ya sea en el backedn o en la base de datos directamente?

Cuando haces un abuso excesivo de los módulos y de los plugins puedes terminar con un sitio que necesita hacer cientos de consultas a la base de datos y gastar unos cuantos y preciosos segundos sustituyendo cosas en el contenido que tarda una eternidad en generarse. Sí, este sitio será espantosamente lento. No es realmente culpa de Joomla, es simplemente el resultado directo de el enfoque que has tomado para la implementación. No diré que sea necesariamente malo pero tampoco diré que sea la mejor manera.

Si tienes un problema que necesita solución, utilizar una extensión debería ser tu último recurso. Comienza primero con los campos personalizados, las modificaciones de plantilla y las modificaciones de idioma. Si piensas que tu sitio parece "vacío" crea contenido de calidad, no lo rellenes con módulos inútiles de los que nadie se preocupa pero que ralentizan tu sitio. La principal directiva es KISS: Keep It Stupidly Simple (Mantenlo estúpidamente simple). Es más fácil decirlo que hacerlo y normalmente tomará unas cuantas iteraciones conseguirlo. Recuerda siempre volver a evaluar si necesitas una extensión y desactivarla o desinstalarla cuando no la necesites más.

 

Sobreescribir en lugar de añadir basura

La mayoría de la gente afronta el desarrollo de sus sitios o de los sitios de sus clientes de la misma manera que un usuario de Android o de iPhone afrontan el uso de su dispositivo: si necesito hacer algo, necesito instalar algo. Yo llamo a esto el Síndrome Hay Una App Para Eso, o "SHUAPE" para abreviar. Suena como una enfermedad terminal, ¿verdad?

La gente que padece ese síndrome termina utilizando tropecientas extensiones que hacen el sitio lento y lo convierten en una barricada para la actualización de Joomla o de PHP dentro de unos meses.

El asunto es que tú no necesitas añadir basura en tu sitio. Joomla es extremadamente flexible recién instalado. Cuando quieras hacer algo para y pregúntate: ¿esto puede conseguirse sólo con las características del núcleo de Joomla?

Al contrario que la mayoría de los otros CMS, Joomla permite modificar como se muestra cualquier cosa utilizando las modificaciones de idioma, modificaciones de plantilla y campos personalizados. Utilizando estas sencillas herramientas puedes crear contenidos increíblemente complejos y sumamente fáciles de gestionar. Después de todo, Joomla desciende de un CMS llamado Mambo cuyo lema era "poder en la simplicidad".

Usando únicamente modificaciones de plantilla y campos personalizados he creado una página de video tutoriales para mi sitio profesional, auto-alojando los videos (sin incrustar YouTube o Vimeo). La página de categorías de videos a la que llegas es un vista de Joomla de categoría en formato blog con una sencilla modificación de plantilla y una pizca de CSS personalizado. Cuando haces clic en una categoría puedes ver una lista de videos. Esto es simplemente un avista de categoría en formato lista con una modificación de plantilla. La longitud de los videos es un campo personalizado de texto. Hay dos campos personalizados más de URL apuntando al archivo de video y a la imagen de portada. Estos se utilizan para mostrar la parte superior de la página individual de video (reproductor de video). Esa página es simplemente un artículo. El contenido del artículo es la transcripción que ves más abajo en la página. La transcripción tiene atributos data-timecode que son analizados por el JavScript de la página, cargado en la modificación de la plantilla, haciendo que sean enlaces sobre los que se puede hacer clic para dirigirse a puntos temporales específicos en el reproductor de video. Es limpio y es todo del núcleo de Joomla. No hay necesidad de una galería externa o de un componente dedicado de tutoriales de video.

He visto la humilde página de lista de etiquetas convertirse en un hermoso panel de selección de área de contenido para una ONG. He visto artículos del núcleo con campos personalizados definiendo el contenido de una manera amigable para el usuario para una aplicación web basada en el tacto, con ningún código externo excepto el JavaScript que maneja el evento de toque. He visto incluso modificaciones de plantilla muy directas que hacen la página de perfil de usuario de Joomla parecer un servicio profesional de alta gama en lugar del montón de campos desordenados.

Desde luego, no todo es posible únicamente con el núcleo - no puedes, de forma sensata, hacer comercio electrónico o reservar citas con el núcleo de Joomla, necesitas una extensión o servicio de terceros - pero las extensiones definitivamente no son la primera o única opción que tienes como integrador de sitios.

Si te mantienes en un uso mínimo y bien planificado de extensiones de terceros, evitarás hacer el sitio más lento y te asegurarás de que se pueda mantener a largo plazo. Esto es especialmente importante cuando las extensiones menos utilizadas desaparecen de la faz de la Tierra y te quedas con la difícil decisión de reimplementar parcialmente un sitio o aguantar con una versión obsoleta de Joomla. Recuerden, amigos, un gramo de previsión vale más que un kilo de tratar frenéticamente de arreglar una mala decisión cuando ya es demasiado tarde.

 

Continuará

Esta es la primera parte de una serie de cinco. La segunda parte: "Ajustes básicos" estará disponible en la edición de diciembre de 2021 de la magazine de la comunidad Joomla.

 


 

Este artículo es una traducción de Joomla 4 Performance Tuning - Part I.

Joomla!® es Software Libre distribuido bajo licencia GNU/GPL
The Joomla!® name is used under a limited license from Open Source Matters in the United States and other countries.
mejorcon.joomla.es is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.