AEM Publish
Der AEM-Publish-Service verfügt über zwei primäre Zwischenspeicherungsebenen, AEM as a Cloud Service CDN und AEM Dispatcher. Optional kann ein kundenverwaltetes CDN vor dem AEM as a Cloud Service CDN platziert werden. Das AEM as a Cloud Service CDN bietet eine Edge-Bereitstellung von Inhalten, um sicherzustellen, dass Erlebnisse für Benutzerinnen und Benutzer auf der ganzen Welt mit geringer Latenz bereitgestellt werden. AEM Dispatcher bietet die Zwischenspeicherung direkt vor AEM Publish und wird verwendet, um eine unnötige Belastungen von AEM Publish selbst zu vermeiden.
{align="center"}
CDN
Die Zwischenspeicherung des AEM as a Cloud Service CDN wird von HTTP-Antwort-Cache-Headern gesteuert und dient zum Zwischenspeichern von Inhalten, um ein Gleichgewicht zwischen Aktualität und Leistung zu optimieren. Das CDN befindet sich zwischen den Endbenutzenden und dem AEM Dispatcher und wird verwendet, um Inhalte so nah wie möglich an den Endbenutzenden zwischenzuspeichern und ihnen so ein leistungsfähiges Erlebnis zu gewährleisten.
{align="center"}
Die Konfiguration der Zwischenspeicherung von Inhalten durch das CDN ist auf das Festlegen von Cache-Headern für HTTP-Antworten beschränkt. Diese Cache-Header werden normalerweise in AEM Dispatcher-Vhost-Konfigurationen mithilfe von mod_headers
festgelegt, können aber auch in benutzerdefiniertem Java™-Code festgelegt werden, der in AEM Publish selbst ausgeführt wird.
Wann werden HTTP-Anfragen/-Antworten zwischengespeichert?
Das AEM as a Cloud Service CDN speichert nur HTTP-Antworten zwischen, und alle folgenden Kriterien müssen erfüllt sein:
- Der HTTP-Antwortstatus ist
2xx
oder3xx
. - Die HTTP-Anfragemethode ist
GET
oderHEAD
- Mindestens einer der folgenden HTTP-Antwort-Header ist vorhanden:
Cache-Control
,Surrogate-Control
oderExpires
- Die HTTP-Antwort kann alle Inhaltstypen umfassen, einschließlich HTML-, JSON-, CSS-, JS- und Binärdateien.
Standardmäßig werden HTTP-Antwort-Cache-Header aus allen HTTP-Antworten, die nicht automatisch durch AEM Dispatcher zwischengespeichert werden, gelöscht, um eine Zwischenspeicherung im CDN zu vermeiden. Dieses Verhalten kann bei Bedarf mit der Option mod_headers
und der Richtlinie Header always set ...
vorsichtig überschrieben werden.
Was wird zwischengespeichert?
Das AEM as a Cloud Service CDN speichert Folgendes zwischen:
- HTTP-Antworttext
- HTTP-Antwort-Header
In der Regel wird eine HTTP-Anfrage/-Antwort für eine einzelne URL als einzelnes Objekt zwischengespeichert. Das CDN kann jedoch mehrere Objekte für eine einzelne URL zwischenspeichern, wenn der Vary
-Header in der HTTP-Antwort festgelegt ist. Vermeiden Sie Vary
in Headern, deren Werte keinen streng kontrollierten Wertesatz aufweisen, da dies zu vielen Cache-Fehlern führen kann, wodurch das Cache-Trefferverhältnis verringert wird. Um die Zwischenspeicherung verschiedener Anforderungen in AEM Dispatcher zu unterstützen, lesen Sie die Dokumentation zur Variantenzwischenspeicherung.
Cache-Lebensdauer cdn-cache-life
Das AEM Publish-CDN basiert auf TTL (Time-to-Live), d. h. die Cache-Lebensdauer wird durch die Cache-Control
, Surrogate-Control
oder Expires
HTTP-Antwortheader bestimmt. Wenn die Header für die HTTP-Antwort-Zwischenspeicherung nicht vom Projekt festgelegt werden und die Eignungskriterien erfüllt sind, legt Adobe eine standardmäßige Cache-Lebensdauer von 10 Minuten (600 Sekunden) fest.
So beeinflussen die Cache-Header die Lebensdauer des CDN-Cache:
Cache-Control
Der HTTP-Antwort-Header gibt dem Webbrowser und dem CDN vor, wie lange die Antwort zwischengespeichert werden soll. Der Wert wird in Sekunden angegeben. Zum Beispiel weistCache-Control: max-age=3600
den Webbrowser an, die Antwort eine Stunde lang zwischenzuspeichern. Dieser Wert wird vom CDN ignoriert, wenn derSurrogate-Control
HTTP-Antwort-Header ebenfalls vorhanden ist.Surrogate-Control
Der HTTP-Antwort-Header gibt dem AEM CDN vor, wie lange die Antwort zwischengespeichert werden soll. Der Wert wird in Sekunden angegeben. Zum Beispiel weistSurrogate-Control: max-age=3600
das CDN an, die Antwort eine Stunde lang zwischenzuspeichern.Expires
Der HTTP-Antwort-Header gibt dem AEM CDN (und dem Webbrowser) vor, wie lange die zwischengespeicherte Antwort gültig ist. Der Wert ist ein Datum. Zum Beispiel weistExpires: Sat, 16 Sept 2023 09:00:00 EST
den Webbrowser an, die Antwort bis zum angegebenen Datum und zur angegebenen Uhrzeit zwischenzuspeichern.
Steuern Sie die Cache-Lebensdauer mit Cache-Control
, wenn sie für Browser und CDN gleich ist. Verwenden Sie Surrogate-Control
, wenn der Webbrowser die Antwort für eine andere Dauer als das CDN zwischenspeichern soll.
Standardmäßige Cache-Lebensdauer
Wenn eine HTTP-Antwort für eine AEM Dispatcher-Zwischenspeicherung nach den oben genannten Qualifikatoren geeignet ist, gelten folgende Standardwerte, sofern keine benutzerdefinierte Konfiguration vorhanden ist.
So passen Sie Cache-Regeln an
Die Konfiguration der Zwischenspeicherung von Inhalten durch das CDN ist auf das Festlegen von Cache-Headern für HTTP-Antworten beschränkt. Diese Cache-Header werden normalerweise in AEM Dispatcher vhost
Konfigurationen mithilfe von mod_headers
festgelegt, können aber auch in benutzerdefiniertem Java™-Code festgelegt werden, der in AEM Publish selbst ausgeführt wird.
AEM Dispatcher
{align="center"}
Wann werden HTTP-Anfragen/-Antworten zwischengespeichert?
HTTP-Antworten für entsprechende HTTP-Anforderungen werden zwischengespeichert, wenn alle folgenden Kriterien erfüllt sind:
-
Die HTTP-Anfragemethode ist
GET
oderHEAD
HEAD
Die HTTP-Anfragen speichern nur die HTTP-Antwort-Header. Sie enthalten keinen Antworttext.
-
Der HTTP-Antwortstatus ist
200
-
Die HTTP-Antwort ist NICHT für eine Binärdatei.
-
Der URL-Pfad der HTTP-Anfrage endet mit einer Erweiterung, z. B.
.html
,.json
,.css
,.js
, usw. -
HTTP-Anfragen enthalten keine Autorisierung und werden nicht von AEM authentifiziert.
- Die Zwischenspeicherung authentifizierter Anfragen kann global oder selektiv über die Zwischenspeicherung unter Berücksichtigung von Berechtigungen aktiviert werden.
-
Die HTTP-Anfrage enthält keine Anfrageparameter.
- Wenn Sie jedoch Ignorierte Abfrageparameter konfigurieren, können HTTP-Anfragen, die die ignorierten Anfrageparameter enthalten, im Cache zwischengespeichert/bereitgestellt werden.
-
Der Pfad der HTTP-Anfrage entspricht einer Dispatcher-Zulassungsregel und stimmt nicht mit einer Ablehnungsregel überein.
-
Die HTTP-Antwort verfügt über keine der folgenden durch AEM Publish festgelegten HTTP-Antwort-Header:
no-cache
no-store
must-revalidate
Was wird zwischengespeichert?
AEM Dispatcher speichert Folgendes zwischen:
-
HTTP-Antworttext
-
HTTP-Antwort-Header, die in der Cache-Header-Konfiguration des Dispatchers angegeben sind. Siehe die Standardkonfiguration, die mit dem AEM-Projektarchetyp bereitgestellt wird.
Cache-Control
Content-Disposition
Content-Type
Expires
Last-Modified
X-Content-Type-Options
Cache-Lebensdauer
AEM Dispatcher speichert HTTP-Antworten mithilfe folgender Vorgehensweisen zwischen:
- Bis zur Invalidierung über Mechanismen wie die Freigabe oder Sperrung der Inhalte.
- TTL (Time-to-Live), wenn diese explizit in der Dispatcher-Konfiguration konfiguriert ist. Die Standardkonfiguration finden Sie im AEM-Projektarchetyp durch Überprüfung der Konfiguration
enableTTL
.
Standardmäßige Cache-Lebensdauer
Wenn eine HTTP-Antwort für eine AEM Dispatcher-Zwischenspeicherung nach den oben genannten Qualifikatoren geeignet ist, gelten folgende Standardwerte, sofern keine benutzerdefinierte Konfiguration vorhanden ist.
So passen Sie Cache-Regeln an
Der Cache des AEM Dispatchers kann über die Dispatcher-Konfiguration konfiguriert werden, einschließlich:
- Was zwischengespeichert wird
- Welche Teile des Zwischenspeichers bei der Veröffentlichung/Aufhebung der Veröffentlichung invalidiert werden
- Welche HTTP-Anfrageparameter bei der Auswertung des Zwischenspeichers ignoriert werden
- Welche HTTP-Antwort-Header zwischengespeichert werden
- Aktivieren oder Deaktivieren der TTL-Zwischenspeicherung
- … und vieles mehr
Wenn Sie die Cache-Header mit mod_headers
festlegen, hat die vhost
-Konfiguration keine Auswirkungen auf die Dispatcher-Zwischenspeicherung (TTL-basiert), da sie erst zur HTTP-Antwort hinzugefügt werden, nachdem AEM Dispatcher die Antwort verarbeitet hat. Um die Dispatcher-Zwischenspeicherung über HTTP-Antwort-Header zu beeinflussen, ist ein benutzerdefinierter Java™-Code erforderlich, der in AEM Publish ausgeführt wird und die entsprechenden HTTP-Antwort-Header festlegt.