Optimizar el rendimiento del sitio de AEM

Descripción general

Este artículo se centra en las formas de mejorar el rendimiento del sitio.  Destacamos varios aspectos de las aplicaciones y arquitecturas de AEM que han causado la mayor cantidad de problemas de rendimiento.  Al implementar las optimizaciones enumeradas aquí, puede evitar estos problemas.

Rendimiento del sitio

1. Realizar un mantenimiento regular.
2. Hacer que las llamadas de servicio back-end toleren errores: consulte este artículo para obtener más información.
3. Tener cuidado al usar marcos de interfaz de usuario de terceros: hemos visto a varios clientes usar o crear bibliotecas que crean una capa entera sobre el marco web de AEM/Sling.  Tenga en cuenta que no nos referimos a utilidades destinadas a una funcionalidad específica en la interfaz de usuario (por ejemplo, ACS Commons) sino a marcos que cambian fundamentalmente la forma en que se implementa la aplicación en AEM.  Si bien estos marcos pueden reducir ligeramente el tiempo de desarrollo, muchas veces hemos visto que pueden tener un impacto negativo en el rendimiento.

Adobe no admite ni prueba los marcos de terceros.  Al utilizar o implementar estos marcos, asegúrese de cargar y probar la aplicación con un tráfico realista.  
4. Rendimiento del lado del cliente

  • Utilice y optimice bibliotecas de clientes de AEM: las bibliotecas de clientes son una manera sencilla de centralizar la administración y la optimización del código CSS y JavaScript de su sitio.
    • Incruste bibliotecas de cliente para consolidarlas en menos archivos.
    • Minimice el número de bibliotecas.
  • Coloque las funciones CSS incluidas en la etiqueta HTML <head>: esto ayuda a evitar parpadeos y volver a pintar en la página después de la carga.
  • Coloque JavaScript <script> al final de la etiqueta <body> o agregue el atributo de secuencia de comandos asincrónico: esto permite al explorador cargar archivos JavaScript en paralelo mientras se representa la página.
  • Implemente el uso compartido de dominios: de forma predeterminada, los exploradores web limitan el número máximo de solicitudes paralelas por dominio durante la carga de la página.  Esto puede causar retrasos en la carga de la página si tiene muchos recursos como CSS, JavaScript, etc. que deben cargarse antes de que se procese la página.  El uso compartido de dominios ayuda a solucionar este problema.  El uso compartido de dominios es donde se incluyen archivos como CSS y JavaScript en el sitio a través de varios subdominios. 
    •  Por ejemplo:
      <script src="//includes1.yoursite.com/etc/clientlibs/test.js"></script>
      <script src="//includes2.yoursite.com/etc/clientlibs/test2.js"></script>
    • Utilice ACS Commons - Redactor de referencias estáticas para implementar el uso compartido de dominios.
  • Almacene en caché JavaScript y CSS durante largos periodos de tiempo: para permitir el almacenamiento en caché de JavaScript y CSS durante largos periodos de tiempo, utilice ACS Commons - Clientlibs con versión.
  • Consulte la documentación de reglas de Google PageSpeed para obtener más información sobre cómo optimizar el sitio.
  • Consulte esta sesión de AEM Gems para obtener más información sobre las optimizaciones del sitio.

Rendimiento de edición de instancias de autor

1. Realizar un mantenimiento regular.
2. Reducir el total de componentes de la página: cuando hay cientos de componentes editables individuales cargados en una página de AEM en una instancia de autor, esto afecta en gran medida al rendimiento de la interfaz de usuario del editor.  Al diseñar la aplicación, favorezca los componentes más específicos del sitio y fáciles de usar para los editores en comparación con los componentes genéricos que tienen muchos subcomponentes.
3. Evitar anidar muchos niveles de componentes de contenedor (sistema de párrafos, cuadrícula adaptable, fragmentos de experiencia): evite anidar muchos niveles de componentes de contenedor.  Al anidar sistemas de párrafos o cuadrículas adaptables, la página /editor.html se carga más lentamente.  Este es el caso especialmente cuando el sistema de párrafos o la cuadrícula adaptable incluye una larga lista de contenido.  En lugar de anidar sistemas de párrafos, diseñe la aplicación para hacer referencia al contenido de otras páginas.  Si opta por utilizar fragmentos de experiencia, evite anidarlos también o aproveche los bloques de creación.  Los fragmentos de experiencia anidados se ven afectados por las mismas limitaciones de rendimiento.

Optimización de la caché

En una arquitectura de sitio de AEM común, la solicitud HTTP pasa por varias memorias caché antes de que finalmente llegue a las instancias de publicación de AEM.  Una de las formas más fáciles de mejorar el rendimiento del sitio es optimizar su accesibilidad.

Consulte este artículo para ver los pasos detallados sobre cómo optimizar el almacenamiento en caché en el sitio.

Optimizar índices para Consultas JCR personalizadas

Otra optimización que se puede realizar para mejorar el rendimiento es configurar y optimizar los índices Oak para sus consultas JCR personalizadas.  Si está utilizando consultas JCR en la aplicación, generalmente se trata de una tarea obligatoria.

Consulte la documentación oficial ([1] y [2]) para ver cómo implementar índices Oak para las consultas de aplicaciones personalizadas.

[1] https://docs.adobe.com/docs/en/aem/6-5/deploy/platform/queries-and-indexing.html

[2] https://helpx.adobe.com/es/experience-manager/6-5/sites/developing/using/troubleshooting-slow-queries.html

 

QueryBuilder guessTotal

Si utiliza AEM QueryBuilder y espera que la consulta devuelva muchos resultados, asegúrese siempre de establecer la propiedad guessTotal en la carpeta raíz PredicateGroup, ya que reducirá el uso de memoria.  Consulte la documentación oficial al respecto para obtener más información:

https://docs.adobe.com/content/help/es-ES/experience-manager-65/developing/platform/query-builder/querybuilder-api.html#using-p-guesstotal-to-return-the-results

Logotipo de Adobe

Inicia sesión en tu cuenta