#AEM

Wie aktiviere ich den AEM Dispatcher Cache?

Inhalt

Caching ist ein entscheidender Performance-Faktor und eine Quelle von Problemen, wenn es nicht korrekt eingerichtet ist. Dieser Artikel bietet eine Übersicht und nützliche, praktische Details dazu, wie man Caching für eine lokale Entwicklungsumgebung anpasst und wo die zwischengespeicherten Dateien gespeichert werden.

Was ist also Cache in AEM und wie funktioniert er?

Cache in AEM ist eine Komponente, die Daten transparent speichert, damit zukünftige Anfragen für diese Daten schneller bedient werden können. Sobald ein cachebares Dokument angefordert wird, prüft der Dispatcher, ob dieses Dokument im Dateisystem des Webservers vorhanden ist:

  • Ist das Dokument zwischengespeichert, gibt der Dispatcher die Datei zurück.
  • Der Dispatcher fordert das Dokument von der AEM-Instanz an, wenn es nicht zwischengespeichert ist.

Standardmäßig werden Ressourcen nur zwischengespeichert, wenn alle der folgenden Bedingungen erfüllt sind:

  • Die HTTP-Anfrage verwendet die GET-Methode;
  • Die angeforderte URL hat eine Erweiterung (wie html oder .xml);
  • Die angeforderte URL hat keinen Query-String (es gibt keine Parameter nach der Erweiterung);
  • Die Anfrage hat keinen „Authorization“-Header (es sei denn, AllowAuthorized ist 1).

Die Einstellungen sind in der Dispatcher-Konfigurationsdatei definiert. In unserem Fall ist es eine conf/dispatcher.any-Datei. Die Konfigurationsdatei enthält eine Reihe von Einzel- oder Mehrwert-Eigenschaften, die das Verhalten des Dispatchers steuern:

  • Eigenschaftsnamen sind mit einem Schrägstrich („/“) präfixiert;
  • Mehrwert-Eigenschaften umschließen untergeordnete Elemente mit geschweiften Klammern („{}“);
  • Kommentare beginnen mit dem Symbol „#“.

Renderer

Zuerst müssen Sie Renderer für den Dispatcher angeben. Renderer sind AEM-Instanzen, von denen der Dispatcher den Inhalt empfängt, der zwischengespeichert werden kann. Renderer sind das Erste, was wir in unserer Konfigurationsdatei definieren werden. Der Dispatcher wird die Last automatisch zwischen diesen AEM-Instanzen ausgleichen, wenn Sie mehr als einen Renderer definieren. In unserem Fall werden wir nur einen Renderer einstellen: die öffentliche AEM-Instanz.

    /renders
      {
      /rend01
        {
        /hostname "localhost"
        /port "4503"
        }
      }

Sie können nun den httpd Server neu starten und überprüfen, ob der Dispatcher Ressourcen von einer öffentlichen AEM-Instanz anfordern kann.

Wenn Sie beispielsweise eine funktionierende http://localhost:4503/content/geometrixx/en.html Seite haben, sollte die Dispatcher-Version dieser Seite unter http://localhost/content/geometrixx/en.html verfügbar sein. Beachten Sie, dass wir den Port in der URL-Anfrage nicht setzen, da der Dispatcher (genauer gesagt, httpd) auf Port 80 arbeitet, was der Standard für alle Browser ist.

Filter

Der /filter Bereich spezifiziert HTTP-Anfragen, die der Dispatcher akzeptieren kann. Alle anderen Anfragen werden mit dem Fehlercode 404 (Seite nicht gefunden) an den Webserver zurückgesendet. Lassen Sie uns für unser Demonstrationsbeispiel den Zugriff auf alle Ressourcen erlauben.

    /filter
      {
      /0001 { /type "allow" /glob "*" }
      }

Filtertypen: „allow“ oder „deny“.

Globs werden mit der gesamten Anfragelinie verglichen, z.B.:

/0001 { /type "allow" /glob "* /index.html *" }

Dieser Glob stimmt mit der Anfrage „GET /index.html HTTP/1.1“ überein, aber nicht mit „GET /index.html?a=b HTTP/1.1“.

Anstelle von „globs“ können Sie separate „url“, „method“, „protocol“, „extension“ verwenden, um Ihren Filter zu definieren. Zusätzlich zu „url“ können Sie „path“, „selectors“, „extension“, „suffix“ verwenden.

Wenn eine Anfrage zu mehreren Filter-Mustern passt, wird nur das letzte Filter-Muster angewendet.

Nachdem Sie Ihre Filter definiert haben, können Sie httpd neu starten und überprüfen, ob der Dispatcher Zugriff auf alle Ressourcen der öffentlichen AEM-Instanz hat. In einer realen Produktionsumgebung sollten Sie aus Sicherheitsgründen natürlich den Zugriff auf einige Ressourcen verweigern.

Cache

Der Caching-Bereich bestimmt die Ressourcen, die der Dispatcher cachen wird. Dieser Bereich enthält viele Regeln, die den Filterregeln ähneln, mit einigen zusätzlichen Einstellungen.

Beispielsweise legt /docroot den Speicherort des Verzeichnisses fest, in dem gecachte Dateien gespeichert werden. Der Wert muss genau dem Pfad des Dokumentenstamms des Webservers entsprechen, damit der Dispatcher und der Webserver dieselben Dateien verwalten können.

Für unsere Demonstration legen wir den Docroot fest und erlauben das Caching aller Ressourcen, die von unserem Renderer (Publish-Instanz) empfangen werden:

    /cache
      {
      /docroot "/Apache22/htdocs"
      /rules
        {
        /0000
          {
          /glob "*"
          /type "allow"
          }
        }
      }

Nachdem Sie diese Änderungen angewendet haben, können Sie den HTTPd -Server neu starten, ein neues privates Browserfenster für den unautorisierten Zugriff ohne Verwendung des „Authorization“-Headers öffnen (Chrome Strg+Umschalt+N, Firefox Strg+Umschalt+P) und zu: http://localhost/content/geometrixx/en/products.html navigieren.

Gecachte Ressourcen sollten im htdocs-Verzeichnis erscheinen. Ressourcen haben eine URL-ähnliche Hierarchie: Verzeichnisse bilden Pfade, und statische HTML-Dateien enthalten gerenderten Inhalt.

Header

Sie wissen, dass gecachte HTML-Dateien nur HTML-Inhalt enthalten. Aber was sollen wir tun, wenn wir Antwort-Header cachen möchten, die von Rendern empfangen werden?

Wenn beispielsweise Antworten von Rendern einen „Content-Type“-Header enthalten, der die Kodierung definiert, wird der HTML-Inhalt ohne diesen Header möglicherweise nicht korrekt angezeigt. Dafür ist der /headers -Block innerhalb der /cache -Sektionen vorgesehen. Lassen Sie uns einige gängige und nützliche Header cachen:

/cache
{
      /headers
        {
        "Cache-Control"
        "Content-Disposition"
        "Content-Type"
        "Expires"
        "Last-Modified"
        "X-Content-Type-Options"
        }
}

Nachdem Sie die Header in Ihrer Dispatcher-Konfigurationsdatei geändert haben, löschen Sie den gesamten Cache aus dem htdocs -Verzeichnis und starten Sie httpd neu. Anschließend können Sie http://localhost/content/geometrixx/en/products.html öffnen.

Schließlich finden Sie nicht nur die gecachte HTML-Datei products.html im Verzeichnis htdocs/content/geometrixx/en, sondern auch die Datei products.html.h neben der ursprünglichen HTML-Datei products.html. Diese *.h-Datei enthält die Header für die gecachte HTML-Datei.

Zusammenfassung

Sie können das Caching schnell mit den folgenden initialen Einstellungen in der Dispatcher-Konfigurationsdatei aktivieren:

  • Rendern einstellen;
  • Filter einstellen;
  • htdocs und Regeln für Cache-Sektionen einstellen;
  • Header zum Speichern von HTTP-Headern einstellen.

FAQ

Wie funktioniert der AEM Dispatcher-Cache?

Nachdem ein anforderbares Dokument angefragt wurde, prüft der Dispatcher, ob dieses Dokument im Dateisystem des Webservers vorhanden ist:

Wenn das Dokument im Cache ist, gibt der Dispatcher die Datei zurück. Der Dispatcher fordert das Dokument von der AEM-Instanz an, wenn es nicht im Cache ist.

Was ist Cache in AEM?

Cache in AEM ist eine Komponente, die Daten transparent speichert, damit zukünftige Anfragen nach diesen Daten schneller bedient werden können.

Was ist berechtigungssensitives Caching in AEM?

Berechtigungssensitives Caching in AEM ermöglicht es Ihnen, geschützte Seiten zu cachen. Der Dispatcher prüft die Zugriffsrechte des Benutzers für eine Seite, bevor er die zwischengespeicherte Seite ausliefert.

    Lassen Sie uns über Ihr Projekt sprechen!
    / 2
    Alle mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder
    Alle mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder
    Alle mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder
    Alle mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder
    Setzen Sie ein Häkchen in das Kästchen
    Erfolg!
    Wir werden uns per E-Mail mit Ihnen in Verbindung setzen