Grundlegendes zu Cache-Richtlinien
Sie können eine Cache-Richtlinie verwenden, um das Cache-Trefferverhältnis zu verbessern, indem Sie die Werte (URL-Abfragezeichenfolgen, HTTP-Header und Cookies) steuern, die im Cache-Schlüssel enthalten sind. CloudFront stellt einige vordefinierte Ursprungsanforderungsrichtlinien für häufige Anwendungsfälle bereit, die als verwaltete Richtlinien bezeichnet werden. Sie können diese verwalteten Richtlinien verwenden oder eine eigene Cache-Richtlinie erstellen, die speziell auf Ihre Anforderungen zugeschnitten ist. Weitere Informationen zu verwalteten Richtlinien finden Sie unter Verwenden verwalteter Cache-Richtlinien.
Eine Cache-Richtlinie enthält die folgenden Einstellungen, die in Richtlinieninformationen, Einstellungen für Time to Live (TTL, Gültigkeitsdauer der Verbindung) und Cache-Schlüssel-Einstellungen unterteilt sind.
Richtlinieninformationen
- Name
-
Ein Name zur Identifizierung der Cache-Richtlinie. Verwenden Sie den Namen in der Konsole, um die Cache-Richtlinie einem Cache-Verhalten anzufügen.
- Beschreibung
-
Ein Kommentar zur Beschreibung der Cache-Richtlinie. Dies ist optional, kann Ihnen jedoch helfen, den Zweck der Cache-Richtlinie zu identifizieren.
Einstellungen für Time to Live (TTL, Gültigkeitsdauer der Verbindung)
Die Time to Live (TTL)-Einstellungen bestimmen in Verbindung mit den HTTP-Headern Cache-Control und Expires (falls diese in der Ursprungsantwort enthalten sind), wie lange Objekte im CloudFront-Cache gültig bleiben.
- Mindest-TTL
-
Die Mindestzeitspanne (in Sekunden), die Objekte im CloudFront-Cache verbleiben sollen, bevor CloudFront eine weitere Anforderung an den Ursprung sendet, um festzustellen, ob das Objekt aktualisiert wurde. Weitere Informationen finden Sie unter Verwalten der Dauer, die Inhalte im Cache bleiben (Ablauf).
Warnung
Wenn Ihre Mindest-TTL größer als 0 ist, speichert CloudFront Inhalte mindestens für die in der Mindest-TTL der Cache-Richtlinie angegebene Dauer im Cache, auch wenn die
Cache-Control: no-cache-,no-store- oderprivate-Richtlinien in den Ursprungsheadern vorhanden sind. - Höchst-TTL
-
Die maximale Zeit (in Sekunden), die Objekte im CloudFront-Cache verbleiben, bevor CloudFront eine weitere Anforderung an den Ursprung sendet, um festzustellen, ob das Objekt aktualisiert wurde. CloudFront verwendet diese Einstellung nur, wenn der Ursprung
Cache-Control- oderExpires-Header mit dem Objekt sendet. Weitere Informationen finden Sie unter Verwalten der Dauer, die Inhalte im Cache bleiben (Ablauf). - Standard-TTL
-
Die Standardzeitspanne (in Sekunden), die Objekte im CloudFront-Cache verbleiben sollen, bevor CloudFront eine weitere Anforderung an den Ursprung sendet, um festzustellen, ob das Objekt aktualisiert wurde. CloudFront verwendet diesen Wert nur dann als Gültigkeitsdauer (Time To Live, TTL) des Objekts, wenn der Ursprung keine
Cache-Control- oderExpires-Header mit dem Objekt sendet. Weitere Informationen finden Sie unter Verwalten der Dauer, die Inhalte im Cache bleiben (Ablauf).
Anmerkung
Wenn die Werte für Mindest-TTL, Höchst-TTL und Standard-TTL alle auf 0 gesetzt sind, wird das CloudFront-Caching deaktiviert.
Cache-Schlüssel-Einstellungen
Die Cache-Schlüsseleinstellungen geben die Werte in Viewer-Anforderungen an, die CloudFront im Cache-Schlüssel einschließt. Bei den Werten kann es sich um URL-Abfragezeichenfolgen, HTTP-Header und Cookies handeln. Die Werte, die Sie in den Cache-Schlüssel einschließen, werden automatisch in Anforderungen aufgenommen, die CloudFront an den Ursprung sendet. Diese werden als Ursprungsanforderungen bezeichnet. Informationen zum Kontrollieren von Ursprungsanforderungen ohne Auswirkungen auf den Cache-Schlüssel finden Sie unter Steuern von Ursprungsanforderungen anhand einer Richtlinie.
Zu den Cache-Schlüssel-Einstellungen gehören:
- Header
-
Die HTTP-Header in Viewer-Anforderungen, die CloudFront im Cache-Schlüssel und in Ursprungsanforderungen einschließt. Sie können für Header eine der folgenden Einstellungen auswählen:
-
None (Keine) – Die HTTP-Header in Viewer-Anforderungen sind nicht im Cache-Schlüssel enthalten und werden nicht automatisch in Ursprungsanforderungen eingeschlossen.
-
Folgende Header einschließen – Sie geben an, welche der HTTP-Header in Viewer-Anforderungen im Cache-Schlüssel enthalten sind und automatisch in Ursprungsanforderungen eingeschlossen werden.
Wenn Sie die Einstellung Folgende Header einschließen verwenden, geben Sie HTTP-Header nach ihrem Namen und nicht nach ihrem Wert an. Betrachten Sie beispielsweise den folgenden HTTP-Header:
Accept-Language: en-US,en;q=0.5In diesem Fall geben Sie den Header als
Accept-Languagean, nicht alsAccept-Language: en-US,en;q=0.5an. CloudFront enthält jedoch den vollständigen Header, einschließlich seines Wertes, im Cache-Schlüssel und in Ursprungsanforderungen.Sie können auch bestimmte Header, die von CloudFront generiert wurden, in den Cache-Schlüssel einschließen. Weitere Informationen finden Sie unter Hinzufügen von CloudFront-Anforderungsheadern.
-
-
Die Cookies in Viewer-Anforderungen, die CloudFront in den Cache-Schlüssel und in Ursprungsanforderungen einschließt. Für Cookies können Sie eine der folgenden Einstellungen auswählen:
-
None (Keine) – Die Cookies in Viewer-Anforderungen sind nicht im Cache-Schlüssel enthalten und werden nicht automatisch in Ursprungsanforderungen aufgenommen.
-
All (Alle) – Alle Cookies in Viewer-Anforderungen sind im Cache-Schlüssel enthalten und werden automatisch in Ursprungsanforderungen aufgenommen.
-
Angegebene Cookies einschließen – Sie geben an, welche der Cookies in Viewer-Anforderungen im Cache-Schlüssel enthalten sind und automatisch in Ursprungsanforderungen eingeschlossen werden.
-
Alle Cookies einschließen außer – Sie geben an, welche der Cookies in Viewer-Anforderungen nicht im Cache-Schlüssel enthalten sind und nicht automatisch in Ursprungsanforderungen enthalten sind. Alle anderen Cookies, mit Ausnahme der von ihnen angegebenen, sind im Cache-Schlüssel und automatisch in Ursprungsanforderungen enthalten.
Wenn Sie die Einstellung Angegebene Cookies einschließen oder Alle Cookies einschließen außer verwenden verwenden, geben Sie Cookies nach ihrem Namen und nicht nach ihrem Wert an. Betrachten Sie beispielsweise den folgenden
Cookie-Header:Cookie: session_ID=abcd1234In diesem Fall geben Sie das Cookie als
session_ID, nicht alssession_ID=abcd1234an. CloudFront enthält jedoch das vollständige Cookie, einschließlich seines Wertes, im Cache-Schlüssel und in Ursprungsanforderungen. -
- Abfragezeichenfolgen
-
Die URL-Abfragezeichenfolgen in Viewer-Anforderungen, die CloudFront im Cache-Schlüssel und in Ursprungsanforderungen einschließt. Für Abfragezeichenfolgen können Sie eine der folgenden Einstellungen auswählen:
-
None (Keine) – Abfragezeichenfolgen in Viewer-Anforderungen sind nicht im Cache-Schlüssel enthalten und sind nicht automatisch in Ursprungsanforderungen enthalten.
-
All (Alle) – Alle Abfragezeichenfolgen in Viewer-Anforderungen sind im Cache-Schlüssel enthalten und sind auch automatisch in Ursprungsanforderungen enthalten.
-
Angegebene Abfragezeichenfolgen einschließne – Sie geben an, welche der Abfragezeichenfolgen in Viewer-Anforderungen im Cache-Schlüssel enthalten sind und automatisch in Ursprungsanforderungen eingeschlossen werden.
-
Alle Abfragezeichenfolgen einschließen außer – Sie geben an, welche der Abfragezeichenfolgen in Viewer-Anforderungen nicht im Cache-Schlüssel enthalten sind und nicht automatisch in Ursprungsanforderungen eingeschlossen werden. Alle anderen Abfragezeichenfolgen außer denen, die Sie angegeben haben, sind im Cache-Schlüssel und automatisch in Ursprungsanforderungen enthalten.
Wenn Sie die Einstellung Angegebene Abfragezeichenfolgen einschließen oder Alle Abfragezeichenfolgen einschließen außer verwenden, geben Sie Abfragezeichenfolgen nach ihrem Namen und nicht nach ihrem Wert an. Betrachten Sie beispielsweise den folgenden URL-Pfad:
/content/stories/example-story.html?split-pages=falseIn diesem Fall geben Sie die Abfragezeichenfolge als
split-pages, nicht alssplit-pages=falsean. CloudFront schließt jedoch die vollständige Abfragezeichenfolge, einschließlich ihres Wertes, in den Cache-Schlüssel und in Ursprungsanforderungen ein.Anmerkung
Bei den Einstellungen des Cache-Schlüssels behandelt CloudFront das Sternchen (
*) für die Header, Abfragezeichenfolgen und Cookies als Literalzeichenfolge und nicht als Platzhalter. -
- Komprimierungsunterstützung
-
Mit diesen Einstellungen kann CloudFront Objekte anfordern und zwischenspeichern, die mit den Komprimierungsformaten Gzip oder Brotli komprimiert sind, sofern der Viewer dies unterstützt. Diese Einstellungen ermöglichen auch die Funktion der CloudFront-Komprimierung. Viewer geben ihre Unterstützung für diese Komprimierungsformate mit dem
Accept-Encoding-HTTP-Header an.Anmerkung
Die Webbrowser Chrome und Firefox unterstützen die Brotli-Komprimierung nur, wenn die Anforderung über HTTPS gesendet wird. Diese Browser unterstützen Brotli mit HTTP-Anforderungen nicht.
Aktivieren Sie diese Einstellungen, wenn eine der folgenden Bedingungen zutrifft:
-
Ihr Ursprung gibt mit Gzip komprimierte Objekte zurück, wenn Viewer diese unterstützen (Anforderungen enthalten den
Accept-Encoding-HTTP-Header mitgzipals Wert). Verwenden Sie in diesem Fall die Einstellung Gzip aktiviert (EnableAcceptEncodingGzipin der CloudFront-API, in den AWS-SDKs, in AWS CLI oder in CloudFormation auftruefestlegen). -
Ihr Ursprung gibt mit Brotli komprimierte Objekte zurück, wenn Viewer diese unterstützen (Anforderungen enthalten den
Accept-Encoding-HTTP-Header mitbrals Wert). Verwenden Sie in diesem Fall die Einstellung Brotli aktiviert (EnableAcceptEncodingBrotliin der CloudFront-API, in den AWS-SDKs, in AWS CLI oder in CloudFormation auftruefestlegen). -
Die Cache-Verhaltensweise, der diese Cache-Richtlinie angefügt ist, ist mit CloudFront-Komprimierung konfiguriert. In diesem Fall können Sie die Zwischenspeicherung für Gzip oder Brotli oder beides aktivieren. Wenn die CloudFront-Komprimierung aktiviert ist, kann das Aktivieren der Zwischenspeicherung für beide Formate dazu beitragen, die Kosten für die Datenübertragung ins Internet zu senken.
Anmerkung
Wenn Sie die Zwischenspeicherung für eines oder beide dieser Komprimierungsformate aktivieren, schließen Sie den
Accept-Encoding-Header nicht in eine Ursprungsanforderungsrichtlinie ein, die demselben Cache-Verhalten zugeordnet ist. CloudFront schließt diesen Header immer dann in Ursprungsanforderungen ein, wenn die Zwischenspeicherung für eines dieser Formate aktiviert ist. Daher hat das Einschließen vonAccept-Encodingin eine Ursprungsanforderungsrichtlinie keine Auswirkung.Wenn Ihr Ursprungsserver keine mit Gzip oder Brotli komprimierten Objekte zurückgibt oder das Cache-Verhalten nicht mit CloudFront-Komprimierung konfiguriert ist, aktivieren Sie keine Zwischenspeicherung für komprimierte Objekte. Wenn Sie dies dennoch tun, kann dies zu einer Verringerung der Cache-Trefferquote führen.
Nachfolgend wird erläutert, wie sich diese Einstellungen auf eine CloudFront-Verteilung auswirken. In allen folgenden Szenarien wird davon ausgegangen, dass die Viewer-Anforderung den
Accept-Encoding-Header enthält. Wenn die Viewer-Anforderung nicht denAccept-Encoding-Header enthält, schließt CloudFront diesen Header nicht in den Cache-Schlüssel und auch nicht in die entsprechende Ursprungsanforderung ein.- Wenn das Zwischenspeichern komprimierter Objekte für beide Komprimierungsformate aktiviert ist
-
Wenn der Viewer sowohl Gzip als auch Brotli unterstützt, das heißt, wenn sich die
gzip- undbr-Werte beide imAccept-Encoding-Header der Viewer-Anforderung befinden, verfährt CloudFront wie folgt:-
Sie normalisiert den Header zu
Accept-Encoding: br,gzipund schließt den normalisierten Header in den Cache-Schlüssel ein. Der Cache-Schlüssel enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden. -
Wenn der Edge-Standort ein mit Brotli oder Gzip komprimiertes Objekt im Cache enthält, das der Anforderung entspricht und nicht abgelaufen ist, gibt der Edge-Standort das Objekt an den Viewer zurück.
-
Wenn der Edge-Standort kein mit Brotli oder Gzip komprimiertes Objekt im Cache enthält, das der Anforderung entspricht und nicht abgelaufen ist, schließt CloudFront den normalisierten Header (
Accept-Encoding: br,gzip) in die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden.
Wenn der Viewer ein Komprimierungsformat unterstützt, nicht jedoch das andere; z. B. wenn
gzipein Wert imAccept-Encoding-Header in der Viewer-Anforderung ist,brjedoch nicht, verfährt CloudFront wie folgt:-
Sie normalisiert den Header zu
Accept-Encoding: gzipund schließt den normalisierten Header in den Cache-Schlüssel ein. Der Cache-Schlüssel enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden. -
Wenn der Edge-Standort ein mit Gzip komprimiertes Objekt im Cache enthält, das der Anforderung entspricht und nicht abgelaufen ist, gibt der Edge-Standort das Objekt an den Viewer zurück.
-
Wenn der Edge-Standort kein mit Gzip komprimiertes Objekt im Cache enthält, das der Anforderung entspricht und nicht abgelaufen ist, schließt CloudFront den normalisierten Header (
Accept-Encoding: gzip) in die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden.
Um zu verstehen, was CloudFront tut, wenn der Viewer Brotli, aber nicht Gzip unterstützt, tauschen Sie die beiden Komprimierungsformate im vorangegangenen Beispiel gegeneinander aus.
Wenn der Viewer Brotli oder Gzip nicht unterstützt, das heißt, der
Accept-Encoding-Header in der Viewer-Anforderung enthält nichtbrodergzipals Werte, verfährt CloudFront wie folgt:-
Schließt den
Accept-Encoding-Header nicht in den Cache-Schlüssel ein. -
Schließt
Accept-Encoding: identityin die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden.
-
- Wenn die Zwischenspeicherung komprimierter Objekte für ein Komprimierungsformat aktiviert ist, aber nicht für das andere
-
Wenn der Viewer das Format unterstützt, für das die Zwischenspeicherung aktiviert ist, so beispielsweise, wenn die Zwischenspeicherung komprimierter Objekte für Gzip aktiviert ist und der Viewer Gzip unterstützt (
gzipist einer der Werte imAccept-Encoding-Header in der Viewer-Anforderung), verfährt CloudFront wie folgt:-
Sie normalisiert den Header zu
Accept-Encoding: gzipund schließt den normalisierten Header in den Cache-Schlüssel ein. -
Wenn der Edge-Standort ein mit Gzip komprimiertes Objekt im Cache enthält, das der Anforderung entspricht und nicht abgelaufen ist, gibt der Edge-Standort das Objekt an den Viewer zurück.
-
Wenn der Edge-Standort kein mit Gzip komprimiertes Objekt im Cache enthält, das der Anforderung entspricht und nicht abgelaufen ist, schließt CloudFront den normalisierten Header (
Accept-Encoding: gzip) in die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden.
Dieses Verhalten ist identisch, wenn der Viewer sowohl Gzip als auch Brotli unterstützt (der
Accept-Encoding-Header in der Viewer-Anforderung enthältgzipundbrals Werte), da in diesem Szenario das Zwischenspeichern komprimierter Objekte für Brotli nicht aktiviert ist.Um zu verstehen, wie CloudFront verfährt, wenn das Zwischenspeichern komprimierter Objekte für Brotli, aber nicht für Gzip aktiviert ist, tauschen Sie die beiden Komprimierungsformate im vorangegangenen Beispiel gegeneinander aus.
Wenn der Viewer das Komprimierungsformat, für das die Zwischenspeicherung aktiviert ist, nicht unterstützt (der
Accept-Encoding-Header in der Viewer-Anforderung den Wert für dieses Format nicht enthält), verfährt CloudFront wie folgt:-
Schließt den
Accept-Encoding-Header nicht in den Cache-Schlüssel ein. -
Schließt
Accept-Encoding: identityin die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendetenAccept-Encoding-Header befanden.
-
- Wenn das Zwischenspeichern komprimierter Objekte für beide Komprimierungsformate deaktiviert ist
-
Wenn das Zwischenspeichern komprimierter Objekte für beide Komprimierungsformate deaktiviert ist, behandelt CloudFront den
Accept-Encoding-Header genau so wie jeden anderen HTTP-Header in der Viewer-Anforderung. Standardmäßig ist dieser nicht im Cache-Schlüssel und nicht in Ursprungsanforderungen enthalten. Sie können diesen wie jeden anderen HTTP-Header in eine Cache-Richtlinie oder eine Ursprungsanforderungsrichtlinie in die Header-Liste einfügen.
-