CDN-Cache-Fehler bei jedem POP für dieselbe Bild-URL
In diesem Artikel wird beschrieben, warum von einem Servlet in Adobe Experience Manager as a Cloud Service bereitgestellte Bilder zu CDN-Cache-Fehlern an verschiedenen CDN Points of Presence (POPs) führen können, auch wenn Cache-Control-Kopfzeilen eine 24-Stunden-TTL angeben, und es wird Anleitung zum erwarteten CDN-Caching-Verhalten gegeben.
Beschreibung description
Umgebung
Adobe Experience Manager as a Cloud Service (alle Versionen)
Problem/Symptome
Ein Servlet gibt JPEG-Bilder für Speicherseiten zurück und legt eine Cache-Control: max-age=86400 Kopfzeile fest (24 Stunden). Allerdings zeigen CDN-Protokolle an, dass dieselbe Bild-URL innerhalb eines Tages mehrmals von der Veröffentlichungsinstanz abgerufen wird, wobei der Cache-Status an verschiedenen CDN-Speicherorten (POPs) fehlschlägt.
Beispielprotokolle:
- Cache-Fehler bei POP „RTM“ für
/path/sample.jpg - Cache-Fehler bei POP „TOJ“ für
/path/sample.jpg
Es wird erwartet, dass das Bild zwischengespeichert und vom CDN für 24 Stunden nach der ersten Anfrage bereitgestellt wird, unabhängig vom POP. Stattdessen tritt bei jeder POP-Anfrage bei der ersten Bildanforderung ein Cache-Fehler auf.
Ursache
Jeder CDN-POP betreibt einen eigenen Cache. Die erste Anfrage für eine Ressource an jedem POP führt zu einem MISS, und nur nachfolgende Anfragen von diesem POP werden aus dem Cache bereitgestellt, bis die TTL abläuft.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben:
- Verstehen Sie, dass jeder CDN-POP seinen eigenen Cache verwaltet. Die erste Anforderung für eine bestimmte URL bei jedem POP führt zu einem Cache-Fehler. Nachfolgende Anforderungen von demselben POP (während TTL gültig ist) sind ein Cache-Treffer.
- Stellen Sie sicher, dass das Servlet explizite Cache-Kopfzeilen für den Browser und das CDN festlegt. Verwenden Sie
Cache-Control: max-age=86400, publicund erwägen Sie das Hinzufügen vonSurrogate-Controloders-maxagefür CDN-spezifische TTL, falls unterstützt. - Verwenden Sie keine
private- oderno-store-Anweisungen, da diese das CDN-Caching verhindern. - Verwenden Sie Tools wie
curlund Überprüfen von CDN-Protokollen, um zu bestätigen, dass die erste Anfrage bei jedem POP ein MISS ist und dass nachfolgende Anfragen von demselben POP innerhalb der TTL Treffer sind.
Weitere Informationen finden Sie in der Dokumentation zum AEM as a Cloud Service CDNCaching.