Optimieren AEM Site-Leistung

Beschreibung

Umgebung
Adobe Experience Manager

Problem/Symptome
In diesem Artikel wird beschrieben, wie Sie die Leistung Ihrer Site verbessern können. Wir haben die verschiedenen Aspekte von Adobe Experience Manager (AEM)-Anwendungen und -Architekturen hervorgehoben, die zu den meisten Leistungsproblemen geführt haben. Durch Implementierung der hier aufgeführten Optimierungen können Sie diese häufigen Probleme vermeiden.

Auflösung

Site-Leistung

  1. Ausführen regelmäßige Wartung.
  2. Fehlertoleranz für Back-End-Dienstaufrufe festlegen - siehe diesem Artikel für Details.
  3. Seien Sie vorsichtig bei der Verwendung von Drittanbieter-UI-Frameworks - Wir haben gesehen, wie eine Reihe von Kunden Bibliotheken verwendet oder erstellt haben, die eine ganze Ebene über dem AEM/Sling-Web-Framework erstellen. Beachten Sie, dass wir nicht auf Dienstprogramme verweisen, die auf bestimmte Funktionen in der Benutzeroberfläche ausgerichtet sind (z. B. ACS Commons), sondern auf Frameworks, die die Implementierung Ihrer Anwendung auf AEM grundlegend ändern. Diese Frameworks können zwar die Entwicklungszeit etwas verkürzen, aber wir haben oft gesehen, dass sie negative Auswirkungen auf die Leistung haben können.
    Drittanbieter-Frameworks werden von Adobe nicht unterstützt oder getestet. Achten Sie bei der Verwendung oder Implementierung solcher Frameworks darauf, Ihre Anwendung gründlich zu laden und mit realistischem Traffic zu testen.

Clientseitige Leistung

  • Verwenden und optimieren Sie AEM Client-Bibliotheken - Client-Bibliotheken sind eine einfache Möglichkeit, die Verwaltung und Optimierung von CSS- und JavaScript-Code auf Ihrer Site zu zentralisieren.

    • Einbetten Client-Bibliotheken, um sie in weniger Dateien zu konsolidieren.
    • Minimieren die Bibliotheken.
  • Fügen Sie CSS-Includes in das HTML-Head-Tag ein - dies verhindert Flackern und Neuzeichnen der Seite nach dem Laden.

  • Fügen Sie das JavaScript-Skript am Ende des Body-Tags ein oder fügen Sie die Async-Skriptattribut - Dadurch kann der Browser JavaScript-Dateien parallel laden, während die Seite gerendert wird.

  • Domänenfreigabe implementieren - Standardmäßig beschränken Webbrowser die maximale Anzahl paralleler Anfragen pro Domäne während des Seitenladevorgangs. Dies kann zu Verzögerungen beim Laden der Seite führen, wenn Sie über viele Ressourcen wie CSS, JavaScript usw. verfügen. die geladen werden müssen, bevor die Seite gerendert wird. Die Freigabe von Domänen ist eine Lösung, die bei der Umgehung dieses Problems hilft. Bei der Domänenfreigabe fügen Sie Dateien wie CSS und JavaScript über mehrere Subdomains auf Ihrer Site ein.

    • Beispiel:

      script src="//includes1.yoursite.com/etc/clientlibs/test.js"/script
      
      script src="//includes2.yoursite.com/etc/clientlibs/test2.js"/script
      
    • Verwendung ACS Commons - Static Reference Rewriter , um die Domänenfreigabe zu implementieren.

  • JavaScript und CSS für lange Zeiträume zwischenspeichern - Um das Caching von JavaScript und CSS für lange Zeiträume zu ermöglichen, nutzen Sie ACS Commons - versionierte Clientlibs.

  • Siehe Dokumentation zu Google PageSpeed-Regeln für weitere Hinweise zur Optimierung Ihrer Site.

  • Siehe dies AEM Gems-Sitzung für weitere Informationen zu Site-Optimierungen.

Bearbeitungsleistung der Autoreninstanz

  1. Ausführen regelmäßige Wartung.
  2. Reduzieren Sie die Gesamtkomponenten auf der Seite. Wenn Hunderte von einzelnen bearbeitbaren Komponenten auf einer AEM Seite in einer Autoreninstanz geladen werden, wirkt sich dies erheblich auf die Leistung der Editor-Benutzeroberfläche aus. Wenn Sie Ihre Anwendung entwerfen, bevorzugen Sie Komponenten, die Site-spezifisch und für Bearbeiter einfach zu verwenden sind, im Vergleich zu allgemeinen Komponenten, die viele Unterkomponenten aufweisen.
  3. Verschachteln Sie nicht viele Ebenen von Container-Komponenten (Absatzsystem, responsives Raster, Experience Fragments) - Vermeiden Sie das Verschachteln vieler Ebenen von Container-Komponenten. Durch das Verschachteln von Absatzsystemen oder responsiven Rastern lädt die Seite /editor.html langsamer. Dies ist insbesondere der Fall, wenn das Absatzsystem oder das responsive Raster eine lange Liste von Inhalten enthält. Anstatt Absatzsysteme zu verschachteln, entwerfen Sie die Anwendung so, dass sie Inhalte von anderen Seiten referenziert. Wenn Sie sich für die Verwendung von Experience Fragments entscheiden, sollten Sie auch diese nicht verschachteln oder Bausteine. Verschachtelte Experience Fragments unterliegen denselben Leistungsbeschränkungen.

Cache-Optimierung

In einer gängigen AEM Site-Architektur durchläuft die HTTP-Anforderung mehrere Caches, bevor sie schließlich die AEM Veröffentlichungsinstanzen erreicht. Eine der einfachsten Möglichkeiten zur Verbesserung der Site-Leistung besteht darin, die Cache-Fähigkeit Ihrer Site zu optimieren.

Siehe diesem Artikel für detaillierte Schritte zur Optimierung der Zwischenspeicherung auf Ihrer Site.

Optimieren von Indizes für benutzerdefinierte JCR-Abfragen

Eine weitere Optimierung, die zur Leistungsverbesserung durchgeführt werden kann, ist die Konfiguration und Optimierung von Oak-Indizes für Ihre benutzerdefinierten JCR-Abfragen. Wenn Sie JCR-Abfragen in Ihrer Anwendung verwenden, ist dies im Allgemeinen eine obligatorische Aufgabe.

Informationen zur Implementierung von Oak-Indizes für Ihre benutzerdefinierten Anwendungsabfragen finden Sie in der offiziellen Dokumentation (1 und 2).:

  1. Best Practice für Abfragen und Indizierung
  2. Fehlerbehebung bei langsamen Abfragen

QueryBuilder guessTotal

Wenn Sie den QueryBuilder AEM und erwarten, dass die Abfrage viele Ergebnisse zurückgibt, stellen Sie immer sicher, dass Sie die Eigenschaft guessTotal auf der Stamm-Eigenschaft PredicateGroup festlegen, da dies die Speicherbelegung reduziert. Weitere Informationen finden Sie in der offiziellen Dokumentation: Query Builder-API

Auf dieser Seite