Konfigurationsprobleme mit der Cache-Steuerung und dem CDN/Dispatcher-Caching in AEM

AEM Dispatcher und nachgelagerte CDNs wie Fastly und Akamai geben ein unerwartetes Caching-Verhalten zurück: Cache-Steuerungswerte, die nicht mit der beabsichtigten TTL übereinstimmen, nur die erste Variante von dynamischen Inhalten, die zwischengespeichert werden, Dynamic Media-URLs ohne Cache-Control-Header und veraltete Antworten, die nach der Invalidierung bestehen bleiben. In den Protokollen wird kein Fehler angezeigt. Das Problem tritt in den HTTP-Antwort-Headern oder in einem inkonsistenten Cache-Verhalten auf. Die Ursache ist eine falsche oder fehlende Cache-Steuerungs- oder Cache-Schlüssellogik auf der Dispatcher- oder CDN-Ebene, da CDNs Upstream-Header berücksichtigen und nicht vorhersehbar zwischenspeichern, wenn diese Header nicht festgelegt sind. Das Konfigurieren expliziter Cache-Steuerungs-Header in Dispatcher, das Anpassen des Cache-Schlüssels für dynamische Varianten und das Festlegen von Regelsätzen für Dynamic Media-Assets stellt ein korrektes, vorhersehbares Caching wieder her.

Beschreibung description

Umgebungen:

  • Adobe Experience Manager as a Cloud Service
  • Adobe Experience Manager Managed Services
  • Adobe Experience Manager On-Premises
  • AEM Dispatcher und Apache HTTP-Server
  • CDN-Ebenen wie Fastly und Akamai
  • Dynamic Media (Scene7)

Problem/Symptome:

  • Cache-Steuerungs-Werte wie max-age oder s-maxage stimmen nicht mit den erwarteten Werten überein, z. B. ein Standardwert von max-age=300 oder max-age=60, s-maxage=7200.
  • Das CDN speichert nur die erste Variante des dynamisch gerenderten Inhalts zwischen.
  • Dynamic Media (Scene7)-URLs geben keine Cache-Control-Kopfzeile zurück.
  • Dispatcher oder das CDN stellt zwischengespeicherte Antworten auch nach der erwarteten Invalidierung bereit.
  • Sie können das CDN oder Dispatcher nicht umgehen, um die Ursprungsausgabe anzuzeigen.

Grundursache:

Die Grundursache ist eine falsche oder fehlende Konfiguration von Cache-Steuerungs-Headern oder Cache-Schlüssellogik auf Dispatcher- oder CDN-Ebene. CDNs wie Fastly und Akamai berücksichtigen Upstream-Cache-Control-Header, und Dispatcher-Standardwerte beeinflussen, was im CDN-Cache abgelegt wird. Wenn Header also nicht explizit konfiguriert sind, speichert das CDN unerwartet Antworten zwischen. Dynamische Inhalte werden zwischengespeichert, wenn der Cache-Schlüssel nicht zwischen benutzerspezifischen Attributen variiert. Für Dynamic Media und Scene7 ist eine Regelsatzkonfiguration erforderlich, um Kopfzeilen für die Cache-Steuerung zu generieren.

Wie kann ich bestätigen

  1. Überprüfen der aktuellen Cache-Control-Kopfzeile von einem Browser oder mit cURL. Führen Sie curl -I https://example.com/path/to/page.html aus und überprüfen Sie den Wert der Cache-Steuerung, z. B. public, max-age=60, s-maxage=7200 oder max-age=300. Vergewissern Sie sich, dass er mit dem übereinstimmt, was Sie in der Produktion erwarten. Wenn die Kopfzeile vollständig fehlt, wenden Sie die explizite Konfiguration in der Auflösung an.
  2. Überprüfen Sie, ob das CDN nur nach URL zwischenspeichert. Dieselbe URL wird zweimal angefordert, wobei eine andere dynamische Ausgabe erwartet wird. Wenn beide Antworten identisch sind, speichert das CDN oder Dispatcher nur die erste Variante zwischen.
  3. Umgehen Sie die Caches, um die ursprüngliche Ausgabe zu sehen. Hängen Sie einen Abfrageparameter an die URL an, z. B. https://example.com/page.html?q=123, um das CDN und Dispatcher zu umgehen. Die Antwort gibt die ursprüngliche Publisher-Ausgabe zurück, die Sie mit der zwischengespeicherten Antwort vergleichen können.

Lösung resolution

Führen Sie zur Behebung des Problems folgende Schritte aus:

  1. Legen Sie Werte für die Cache-Steuerung in der Dispatcher-Konfiguration fest. Aktualisieren Sie die Regeln, in denen die Header von Cache-Steuerelementen definiert sind. Bearbeiten Sie in AEM as a Cloud Service den Dispatcher-Code im Projekt-Repository und stellen Sie ihn über Cloud Manager bereit. Aktualisieren Sie in Managed Services und lokal die Apache- und Dispatcher-Konfiguration auf dem Server oder über die Cloud Manager-Pipeline. Führen Sie nach der Bereitstellung curl -I erneut aus, um zu bestätigen, dass die Kopfzeilen die aktualisierte TTL widerspiegeln.
  2. Konfigurieren Sie gegebenenfalls das Caching dynamischer Varianten. Wenn der Inhalt je nach Parameter variieren soll, schließen Sie die erforderlichen Abfrageparameter oder Cookies in den Cache-Schlüssel ein, der in den Dispatcher-Regeln konfiguriert ist. Senden Sie mehrere Anfragen mit unterschiedlichen Parametern und bestätigen Sie, dass das CDN unterschiedliche Antworten zurückgibt.
  3. Festlegen von Cache-Steuerungs-Headern für Dynamic Media- und Scene7-Assets. Verwenden Sie die Regelsätze Dynamic Media und Scene7 , um die Cache-Control-Kopfzeile mit dem gewünschten max-age=N festzulegen. Führen Sie curl -I auf der Dynamic Media-URL aus, z. B. is/image/..., und überprüfen Sie, ob die Cache-Control-Kopfzeile angezeigt wird.
  4. Löschen Sie den Cache oder umgehen Sie ihn, um das Ergebnis zu validieren. Führen Sie nach den Konfigurationsänderungen curl -I erneut aus und bestätigen Sie, dass der Cache-Control-Header der gewünschten TTL entspricht. Wenn CDN-Debug-Kopfzeilen verfügbar sind, überprüfen Sie, ob das CDN die aktualisierte TTL zurückgibt, und bestätigen Sie dynamische Varianten, indem Sie Inhalte für mehrere Benutzer oder Parameter anfordern.

Wenn das Problem weiterhin besteht

Kontaktieren Sie den Adobe-Support mit der curl -I Ausgabe der betroffenen URLs, den Dispatcher-Konfigurations-Snippets zur Steuerung der Cache-Steuerung, den CDN-Ebenendetails wie Akamai oder Fastly und einer Beschreibung des erwarteten im Vergleich zum tatsächlichen Verhalten.

Verwandtes Lesen

recommendation-more-help
experience-cloud-kcs-help-kbarticles