Otimizar o desempenho do site do AEM

Visão geral

Este artigo apresenta maneiras de melhorar o desempenho do seu site.  Destacamos vários aspectos de aplicativos e arquiteturas do AEM que causaram mais problemas de desempenho.  Ao implementar as otimizações listadas aqui, você pode evitar esses problemas frequentes.

Desempenho do site

1. Faça manutenção com frequência.
2. Torne as chamadas de serviço de back-end tolerante a falhas - consulte este artigo para obter mais informações.
3. Tenha cuidado ao usar estruturas de interface de usuário de terceiros - vimos vários clientes usando ou criando bibliotecas que criam uma camada inteira sobre a estrutura da Web do AEM/Sling.  Observe que não estamos nos referindo a utilitários que direcionam uma funcionalidade específica na interface do usuário (por exemplo, ACS Commons), mas estruturas que mudam basicamente a forma como você implementa o aplicativo no AEM.  Embora esses quadros possam reduzir um pouco o tempo de desenvolvimento, muitas vezes vimos que podem ter um impacto negativo no desempenho.

Estruturas de terceiros não são aceitas ou testadas pela Adobe.  Ao usar ou implementar essas estruturas, carregue e teste seu aplicativo totalmente com tráfego real.  
4. Desempenho do lado do cliente

  • Use e otimize bibliotecas de cliente AEM - as bibliotecas de clientes são uma maneira fácil de centralizar o gerenciamento e a otimização do código CSS e JavaScript no seu site.
    • Incorpore bibliotecas clientes para consolidá-las em menos arquivos.
    • Reduza as bibliotecas.
  • Coloque CSS na tag HTML <head> - para evitar oscilações e a reimpressão da página após o carregamento.
  • Coloque JavaScript <script> no final da tag <body> ou adicione o atributo de script assíncrono - para permitir que o navegador carregue arquivos JavaScript em paralelo enquanto a página está sendo renderizada.
  • Implemente a fragmentação de domínio - por padrão, os navegadores da Web limitam o número máximo de solicitações paralelas por domínio durante o carregamento da página.  Essa limitação pode causar atrasos no carregamento da página se você tiver muitos recursos, como CSS, JavaScript etc., que precisam ser carregados antes da renderização da página.  A fragmentação de domínio é uma solução que ajuda a solucionar esse problema.  A fragmentação de domínio é uma forma de incluir arquivos como CSS e JavaScript no site por meio de vários subdomínios.
    •  Por exemplo:
      <script src="//includes1.yoursite.com/etc/clientlibs/test.js"></script>
      <script src="//includes2.yoursite.com/etc/clientlibs/test2.js"></script>
    • Use ACS Commons - Static Reference Rewriter para implementar a fragmentação de domínio.
  • Armazene em cache JavaScript e CSS por longos períodos - para permitir o armazenamento em cache de javascript e css por longos períodos, utilize ACS Commons - Versioned Clientlibs.
  • Consulte a documentação de regras do Google PageSpeed para obter mais informações sobre como otimizar seu site.
  • Consulte esta sessão do AEM Gems para obter mais informações sobre otimizações de site.

Desempenho de edição de instância do autor

1. Faça manutenção com frequência.
2. Reduza o total de componentes na página - Quando há centenas de componentes editáveis individuais carregados em uma página do AEM em uma instância do autor, o desempenho da interface do editor é muito afetado.  Ao projetar seu aplicativo, use os componentes mais específicos do site e fáceis de usar pelos editores em vez dos componentes genéricos que têm muitos subcomponentes.
3. Evite aninhar muitos níveis de componentes do container (sistema de parágrafo, grade responsiva, fragmentos de experiência) - Evite aninhar muitos níveis de componentes do container.  O aninhamento de sistemas de parágrafo ou grades responsivas faz com que a página /editor.html seja carregada mais lentamente.  Geralmente, o sistema de parágrafo ou a grade responsiva inclui uma longa lista de conteúdo.  Em vez de aninhar sistemas de parágrafo, crie o aplicativo para fazer referência ao conteúdo de outras páginas.  Se você optar por usar fragmentos de experiência, evite aninhá-los ou use blocos de construção.  Os fragmentos de experiência aninhados são afetados pelas mesmas limitações de desempenho.

Otimização do cache

Em uma arquitetura comum de site do AEM, a solicitação HTTP passa por vários caches antes de chegar às instâncias de publicação do AEM.  Uma das maneiras mais fáceis de melhorar o desempenho do site é otimizar a capacidade de armazenamento em cache do site.

Consulte este artigo para obter as etapas detalhadas sobre como otimizar o armazenamento em cache no seu site.

Otimizar índices para queries JCR personalizados

Outra otimização que pode ser feita para melhorar o desempenho é configurar e otimizar Índices Oak para queries JCR personalizados.  Se você estiver usando queries JCR no seu aplicativo, essa configuração é uma tarefa obrigatória.

Consulte a documentação oficial ([1] e [2]) para saber como implementar índices Oak para queries de aplicativo personalizados.

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

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

 

QueryBuilder guessTotal

Se você estiver usando o AEM QueryBuilder e esperar que o query retorne muitos resultados, sempre defina a propriedade guessTotal no PredicateGroup raiz, pois o uso da memória será reduzida.  Consulte a documentação oficial para obter detalhes:

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

Logotipo da Adobe

Fazer logon em sua conta