Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Warum verwendet meine CloudFront-Distribution die Cache-Einstellungen meines Ursprungs, wenn ich das benutzerdefinierte Objekt-Caching einrichte?
Ich möchte Fehler beheben, warum meine Amazon CloudFront-Distribution die Cache-Einstellungen meines Ursprungs verwendet, wenn ich das benutzerdefinierte Objekt-Caching einrichte.
Kurzbeschreibung
Wenn du das Objekt-Caching anpasst, konfiguriere die Standard-Time-to-Live (Standard-TTL), die Mindest-TTL und die Maximale TTL.
CloudFront verwendet das folgende Verhalten:
- Wenn der Ursprung keinen Caching-Header zurückgibt, verwendet die CloudFront-Distribution die Standard-TTL.
- Wenn der Ursprung einen Caching-Header zurückgibt, der kleiner als die Mindest-TTL ist, verwendet die Distribution die Mindest-TTL.
- Wenn der Ursprung einen Caching-Header zurückgibt, der größer als die Maximale TTL ist, verwendet die Distribution die Maximale TTL.
Hinweis: Die Antwort an den Client enthält die Caching-Header des Ursprungs, selbst wenn CloudFront die Antwort auf der Grundlage des Mindest-TTL oder die Maximale TTL zwischenspeichert. Alle privaten Caches, wie z. B. ein Browser oder ein Proxy, können den Caching-Header des Ursprungs verwenden.
Wenn die Distribution nicht auf der Grundlage des TTL-Standardwerts zwischenspeichert, stelle sicher, dass die Caching-Header des Ursprungs nicht miteinander in Konflikt stehen.
Lösung
Die Caching-Header identifizieren, die Konflikte verursachen
Überprüfe, ob die Caching-Header des Ursprungs mit dem benutzerdefinierten Objekt-Caching der Distribution in Konflikt stehen.
Die Mindest-TTL und die Standard-TTL sind auf 0 gesetzt, es gibt jedoch immer noch zwischengespeicherte Ergebnisse von CloudFront
Überprüfe die Antwort von CloudFront, um zu überprüfen, ob der Wert für X-Cache Hit from cloudfront oder RefreshHit from cloudfront ist:
< HTTP/1.1 200 OK < Content-Type: text/html < Content-Length: 437 < Connection: keep-alive < Date: Sat, 03 Feb 2018 19:26:45 GMT < Last-Modified: Sat, 03 Feb 2018 19:25:24 GMT < ETag: "example12345abcdefghijklmno54321" < Cache-Control: max-age=300, Public < Accept-Ranges: bytes < Server: AmazonS3 < Age: 14 < X-Cache: Hit from cloudfront
Wenn X-Cache Hit from cloudfront oder RefreshHit from cloudfront lautet, dann kam die Anfrage aus dem Cache des Edge-Standorts. Bei einem Aktualisierungstreffer überprüft CloudFront anhand des Ursprungs erneut, dass das abgelaufene Objekt nicht geändert wurde und aktualisiert es dann, wenn das Objekt veraltet ist.
Überprüfe die Werte Cache-Control, Expires und Age in der Antwort. Wenn der Wert für max-age für Cache-Control größer als der Wert für Age ist, stammt die zwischengespeicherte Antwort aus dem CloudFront-Cache. Wenn das Datum für Expires noch in der Zukunft liegt, ist die zwischengespeicherte Antwort ebenfalls nicht veraltet. Dies ist ein erwartetes Verhalten, auch wenn für den Cache-Verhaltenspfad die Mindest-TTL und die Standard-TTL auf 0 gesetzt sind.
Hinweis: Im vorherigen Beispiel ist die Maximale TTL größer als 0. Wenn alle TTL-Werte auf 0 gesetzt sind, ist das Caching deaktiviert.
Die Maximale TTL und die Standard-TTL sind größer als 0, CloudFront weist jedoch Fehlschläge auf
Überprüfe die Antwort von CloudFront, um zu überprüfen, ob der Wert für X-Cache Miss from cloudfront ist:
< HTTP/1.1 200 OK < Content-Type: text/html < Content-Length: 437 < Connection: keep-alive < Date: Sat, 03 Feb 2018 19:26:45 GMT < Last-Modified: Sat, 03 Feb 2018 19:25:24 GMT < ETag: "example12345abcdefghijklmno54321" < Cache-Control: no-cache, no-store < Accept-Ranges: bytes < Server: AmazonS3 < X-Cache: Miss from cloudfront
Wenn X-Cache Miss from cloudfront ist, dann kam die Anfrage vom Ursprung und nicht vom Cache.
Wenn der Cache-Control-Wert no-store lautet, weist der Header CloudFront an, die Antwort nicht zwischenzuspeichern. Wenn Cache-Control keinen Cache hat, weist der Header CloudFront an, den Ursprung zu überprüfen, bevor eine zwischengespeicherte Antwort zurückgegeben wird. Wenn Cache-Control auf private eingestellt ist, sollte CloudFront die Antwort nur in privaten Caches speichern, z. B. im lokalen Cache für einen Browser.
Dieses Verhalten überschreibt die Einstellungen für Maximale TTL und Standard-TTL.
Hinweis: Antworten, die nicht aus dem Cache stammen, haben keinen Age-Header.
In den vorangegangenen Beispielen ist Minimum TTL auf 0 gesetzt. Wenn Minimum TTL größer als 0 ist, speichert CloudFront das Objekt im Cache, auch wenn die Antwort die Anweisungen no-cache, ohne no-store oder private enthält. Weitere Informationen findest du unter Angeben der Zeitspanne, in der CloudFront Objekte zwischenspeichert.
CloudFront speichert Fehlerantworten im Cache
CloudFront leitet Fehlerantworten vom Ursprung an den Client weiter und speichert die Fehlerantwort des Ursprungs standardmäßig für 10 Sekunden im Cache.
Wenn die Fehlerantwort des Ursprungs einen Cache-Control-Header enthält, speichert CloudFront den Fehler mit der entsprechenden TTL statt der standardmäßigen 10 Sekunden im Cache.
Um zu überprüfen, ob die Fehlerantwort vom Ursprung oder von CloudFront stammt, sieh dir den Wert Server an. Um zu überprüfen, ob es sich bei dem Fehler um eine zwischengespeicherte Antwort handelt, überprüfe, ob die Antwort den Age-Header enthält.
Das folgende Beispiel ist ein Fehler von einem Amazon Simple Storage Service (Amazon S3)-Ursprung, bei dem es sich um eine zwischengespeicherte Antwort handelt:
< HTTP/1.1 403 Forbidden < Content-Type: application/xml < Transfer-Encoding: chunked < Connection: keep-alive < Date: Sat, 03 Feb 2018 21:07:51 GMT < Server: AmazonS3 < Age: 12 < X-Cache: Error from cloudfront
Das folgende Beispiel ist ein Fehler von CloudFront, der keine zwischengespeicherte Antwort ist:
< HTTP/1.1 403 Forbidden < Server: CloudFront < Date: Sat, 03 Feb 2018 21:14:53 GMT < Content-Type: text/xml < Content-Length: 146 < Connection: keep-alive < X-Cache: Error from cloudfront
Den Ursprung aktualisieren
Nachdem du die Caching-Header identifiziert hast, die das benutzerdefinierte Objekt-Caching der Distribution überschreiben, aktualisiere den Ursprung.
Führe die folgenden Schritte aus:
- Identifiziere, wo sich die Header in der Webserverkonfiguration befinden.
- Entferne die Zeilen, in denen die Header angewendet werden.
- Starte den Server neu.
- Teste den Ursprung, um zu überprüfen, ob die Caching-Header in der Antwort nicht mehr zurückgegeben werden.
- Führe eine Invalidierung für die gesamte CloudFront-Distribution durch, um die Änderung zu übernehmen.
Ähnliche Informationen
Inhalte auf der Grundlage von Anforderungsheadern zwischenspeichern
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Jahren