Ottimizzare le prestazioni AEM sito

Ultimo aggiornamento: 2023-04-28

Descrizione

Ambiente
Adobe Experience Manager

Problema/Sintomi
Questo articolo si concentra su come migliorare le prestazioni del sito. Abbiamo messo in evidenza i vari aspetti delle applicazioni e delle architetture Adobe Experience Manager (AEM) che hanno causato il maggior numero di problemi di prestazioni. Implementando le ottimizzazioni elencate qui, puoi evitare tali problemi comuni.

Risoluzione

Prestazioni del sito

  1. Esegui manutenzione regolare.
  2. Rendi le chiamate di servizio back-end tolleranti gli errori - vedi articolo per i dettagli.
  3. Presta attenzione quando utilizzi i framework di terze parti per l’interfaccia utente : abbiamo notato che diversi clienti utilizzano o creano librerie che generano un intero livello sul framework web AEM/Sling. Nota che non ci riferiamo a utility per specifiche funzionalità nell’interfaccia utente (ad esempio ACS Commons), ma a framework che modificano radicalmente la modalità di implementazione dell’applicazione in AEM. Anche se questi framework possono ridurre leggermente i tempi di sviluppo, molte volte abbiamo constatato che possono avere un impatto negativo sulle prestazioni.
    I framework di terze parti non sono supportati o testati da Adobe. Quando utilizzi o implementi tali framework, assicurati di caricare a fondo e sottoporre a test di stress l’applicazione con traffico realistico.

Prestazioni lato client

  • Utilizza e ottimizza AEM librerie client : le librerie client consentono di centralizzare facilmente la gestione e l’ottimizzazione del codice CSS e JavaScript nel sito.

    • Incorpora librerie client per consolidarle in un numero minore di file.
    • Miniatura le librerie.
  • Inserisci inclusioni CSS nel tag head di HTML : per evitare lo sfarfallio e il ridisegno della pagina dopo il caricamento.

  • Inserisci inclusioni di script JavaScript al termine del tag body o aggiungi il attributo script asincrono - questo consente al browser di caricare file JavaScript in parallelo mentre la pagina viene sottoposta a rendering.

  • Implementa il partizionamento del dominio : per impostazione predefinita, i browser web limitano il numero massimo di richieste parallele per dominio durante il caricamento della pagina. Questo può causare ritardi nel caricamento della pagina se disponi di molte risorse come CSS, JavaScript, ecc. che devono essere caricati prima del rendering della pagina. La condivisione dei domini è una soluzione che aiuta a risolvere questo problema. La condivisione del dominio è il punto in cui includi sul sito file come CSS e JavaScript tramite più sottodomini.

    • Ad esempio:

      script src="//includes1.yoursite.com/etc/clientlibs/test.js"/script
      
      script src="//includes2.yoursite.com/etc/clientlibs/test2.js"/script
      
    • Utilizzo ACS Commons - Rewriter di riferimento statico per implementare la condivisione del dominio.

  • Memorizza in cache JavaScript e CSS per lunghi periodi di tempo - Per consentire la memorizzazione in cache di javascript e css per lunghi periodi di tempo, utilizza ACS Commons - Clientlibs con versione.

  • Consulta la sezione Documentazione delle regole di Google PageSpeed per ulteriori indicazioni su come ottimizzare il sito.

  • Vedi questo Sessione AEM Gems per ulteriori informazioni sulle ottimizzazioni del sito.

Prestazioni di modifica dell’istanza dell’autore

  1. Esegui manutenzione regolare.
  2. Riduci il totale dei componenti sulla pagina : se in un’istanza di authoring sono presenti centinaia di componenti modificabili caricati in una pagina AEM, questo influisce notevolmente sulle prestazioni dell’interfaccia utente dell’editor. Durante la progettazione dell’applicazione, preferisci i componenti più specifici del sito e facili da utilizzare per gli editor rispetto ai componenti generici con molti sottocomponenti.
  3. Evita di nidificare molti livelli di componenti contenitore (sistema paragrafo, griglia responsive, frammenti di esperienza) - Evita di nidificare molti livelli di componenti contenitore. La nidificazione dei sistemi paragrafo o delle griglie reattive rallenta il caricamento della pagina /editor.html . Ciò si verifica in particolare quando il sistema paragrafo o la griglia reattiva includono un lungo elenco di contenuti. Invece di nidificare i sistemi paragrafo, progetta l’applicazione per fare riferimento al contenuto di altre pagine. Se scegli di utilizzare i frammenti di esperienza, evita di nidificarli o sfrutta mattoni :text=Building%20Blocks%20with%20Experience%20Frammenti&text=Building%20Blocks%20enable%20content%20authors, diverso%20variation%20of%20Experience%20Fragments.&text=Il%20template%20used%20for%20Experience,to%20riutilizzo%20components%20across%20variation.). I frammenti di esperienza nidificati sono interessati dalle stesse limitazioni di prestazioni.

Ottimizzazione della cache

In un’architettura comune del sito AEM, la richiesta HTTP passa attraverso più cache prima di raggiungere infine le istanze di pubblicazione AEM. Uno dei modi più semplici per migliorare le prestazioni del sito è quello di ottimizzare la capacità di memorizzazione in cache del sito.

Vedi articolo per passaggi dettagliati su come ottimizzare la memorizzazione in cache nel sito.

Ottimizzare gli indici per le query JCR personalizzate

Un'altra ottimizzazione che può essere effettuata per migliorare le prestazioni è quella di configurare e ottimizzare gli indici Oak per le query JCR personalizzate. Se utilizzi query JCR all’interno dell’applicazione, questa è generalmente un’attività obbligatoria.

Consulta la documentazione ufficiale (1 e 2) per informazioni su come implementare gli indici Oak per le query personalizzate dell’applicazione.:

  1. Tecniche consigliate per query e indicizzazione
  2. Risoluzione dei problemi relativi alle query lente

Parametro guessTotal di QueryBuilder

Se si utilizza QueryBuilder AEM e si prevede che la query restituisca molti risultati, assicurarsi sempre di impostare la proprietà guessTotal sulla radice PredicateGroup in quanto ridurrà l'utilizzo della memoria. Vedi la documentazione ufficiale su questo per i dettagli: API di Query Builder

In questa pagina