Grundlegendes zu Cache-Richtlinien - Amazon CloudFront

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- oder private-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- oder Expires-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- oder Expires-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.5

In diesem Fall geben Sie den Header als Accept-Language an, nicht als Accept-Language: en-US,en;q=0.5 an. 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.

Cookies

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=abcd1234

In diesem Fall geben Sie das Cookie als session_ID, nicht als session_ID=abcd1234 an. 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=false

In diesem Fall geben Sie die Abfragezeichenfolge als split-pages, nicht als split-pages=false an. 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 mit gzip als Wert). Verwenden Sie in diesem Fall die Einstellung Gzip aktiviert (EnableAcceptEncodingGzip in der CloudFront-API, in den AWS-SDKs, in AWS CLI oder in CloudFormation auf true festlegen).

  • Ihr Ursprung gibt mit Brotli komprimierte Objekte zurück, wenn Viewer diese unterstützen (Anforderungen enthalten den Accept-Encoding-HTTP-Header mit br als Wert). Verwenden Sie in diesem Fall die Einstellung Brotli aktiviert (EnableAcceptEncodingBrotli in der CloudFront-API, in den AWS-SDKs, in AWS CLI oder in CloudFormation auf true festlegen).

  • 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 von Accept-Encoding in 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 den Accept-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- und br-Werte beide im Accept-Encoding-Header der Viewer-Anforderung befinden, verfährt CloudFront wie folgt:

  • Sie normalisiert den Header zu Accept-Encoding: br,gzip und 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 gesendeten Accept-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 gesendeten Accept-Encoding-Header befanden.

Wenn der Viewer ein Komprimierungsformat unterstützt, nicht jedoch das andere; z. B. wenn gzip ein Wert im Accept-Encoding-Header in der Viewer-Anforderung ist, br jedoch nicht, verfährt CloudFront wie folgt:

  • Sie normalisiert den Header zu Accept-Encoding: gzip und 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 gesendeten Accept-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 gesendeten Accept-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 nicht br oder gzip als Werte, verfährt CloudFront wie folgt:

  • Schließt den Accept-Encoding-Header nicht in den Cache-Schlüssel ein.

  • Schließt Accept-Encoding: identity in die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendeten Accept-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 (gzip ist einer der Werte im Accept-Encoding-Header in der Viewer-Anforderung), verfährt CloudFront wie folgt:

  • Sie normalisiert den Header zu Accept-Encoding: gzip und 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 gesendeten Accept-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ält gzip und br als 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: identity in die entsprechende Ursprungsanforderung ein. Die Ursprungsanforderung enthält keine anderen Werte, die sich in dem vom Viewer gesendeten Accept-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.