Deaktivieren des CDN-Cachings
Erfahren Sie, wie Sie das Caching von HTTP-Antworten im CDN von AEM as a Cloud Service deaktivieren. Das Caching von Antworten wird durch die HTTP-Antwort-Cache-Header Cache-Control
, Surrogate-Control
oder Expires
gesteuert.
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.
Caching-Standardverhalten
Das Caching von HTTP-Antworten im CDN von AEM as a Cloud Service wird durch die folgenden HTTP-Antwort-Header der ursprünglichen Elemente Cache-Control
, Surrogate-Control
oder Expires
gesteuert. Ursprungsantworten, die private
, no-cache
oder no-store
in Cache-Control
enthalten, werden nicht zwischengespeichert.
Überprüfen Sie das Caching-Standardverhalten für AEM Publish und Author, wenn ein AEM-Projekt bereitgestellt wird, das auf einem AEM-Projektarchetyp basiert.
Deaktivieren des Cachings
Das Deaktivieren des Cachings kann sich negativ auf die Leistung Ihrer AEM as a Cloud Service-Instanz auswirken. Seien Sie daher vorsichtig, wenn Sie das Caching-Standardverhalten deaktivieren.
Es gibt jedoch einige Szenarien, in denen es angebracht sein kann, das Caching zu deaktivieren, z. B.:
- Entwickeln einer neuen Funktion, wobei Sie die Änderungen sofort sehen möchten.
- Inhalt ist sicher (nur für authentifizierte Benutzende vorgesehen) oder dynamisch (z. B. Warenkorb, Bestelldetails) und sollte nicht zwischengespeichert werden.
Um das Caching zu deaktivieren, können Sie die Cache-Header auf zwei Arten aktualisieren.
- Dispatcher-vhost-Konfiguration: Nur für AEM Publish verfügbar.
- Benutzerdefinierter Java™-Code: Für AEM Publish und Author verfügbar.
Sehen wir uns diese beiden Optionen an.
Dispatcher-vhost-Konfiguration
Diese Option wird zum Aktivieren des Cachings empfohlen, allerdings ist sie nur für AEM Publish verfügbar. Um die Cache-Header zu aktualisieren, verwenden Sie das Modul mod_headers
und die Anweisung <LocationMatch>
in der vhost-Datei des Apache HTTP-Servers. Die allgemeine Syntax lautet folgendermaßen:
<LocationMatch "$URL$ || $URL_REGEX$">
# Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed.
Header unset Cache-Control
Header unset Surrogate-Control
Header unset Expires
# Instructs the Browser and the CDN to not cache the response.
Header always set Cache-Control "private"
# Instructs only the CDN to not cache the response.
Header always set Surrogate-Control "private"
</LocationMatch>
Beispiel
Um das CDN-Caching der CSS-Inhaltstypen zum Beheben bestimmter Fehler zu deaktivieren, führen Sie diese Schritte aus.
Beachten Sie, dass zum Umgehen des vorhandenen CSS-Caches die CSS-Datei bearbeitet werden muss, um einen neuen Cache-Schlüssel für die CSS-Datei zu generieren.
-
Suchen Sie in Ihrem AEM-Projekt im Verzeichnis
dispatcher/src/conf.d/available_vhosts
nach der gewünschten vhost-Datei. -
Aktualisieren Sie die vhost-Datei (z. B.
wknd.vhost
) wie folgt:code language-none <LocationMatch "^/etc.clientlibs/.*\.(css)$"> # Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed. Header unset Cache-Control Header unset Expires # Instructs the Browser and the CDN to not cache the response. Header always set Cache-Control "private" </LocationMatch>
Die vhost-Dateien im Verzeichnis
dispatcher/src/conf.d/enabled_vhosts
sind Symlinks zu den Dateien im Verzeichnisdispatcher/src/conf.d/available_vhosts
. Stellen Sie daher sicher, dass Sie Symlinks erstellen, falls diese nicht vorhanden sind. -
Stellen Sie die vhost-Änderungen in der gewünschten AEM as a Cloud Service-Umgebung bereit. Verwenden Sie dazu die Web-Stufen-Konfigurations-Pipeline von Cloud Manager oder RDE-Befehle.
Benutzerdefinierter Java™-Code
Diese Option ist für AEM Publish und Author verfügbar. Verwenden Sie zum Aktualisieren der Cache-Header das Objekt SlingHttpServletResponse
in benutzerdefiniertem Java™-Code (Sling-Servlet, Sling-Servlet-Filter). Die allgemeine Syntax lautet folgendermaßen:
response.setHeader("Cache-Control", "private");