Zwischenspeichern von Inhalten auf der Grundlage von Cookies - Amazon CloudFront

Zwischenspeichern von Inhalten auf der Grundlage von Cookies

Cookies werden von CloudFront standardmäßig nicht berücksichtigt, wenn Anforderungen und Antworten verarbeitet werden oder wenn Sie Ihre Objekte an Edge-Standorten zwischenspeichern. Wenn CloudFront zwei Anforderungen empfängt, die bis auf die Informationen im Cookie-Header identisch sind, behandelt CloudFront die Anforderungen standardmäßig als identisch und gibt dasselbe Objekt für beide Anforderungen zurück.

Sie können CloudFront so konfigurieren, dass einige oder alle Cookies in Viewer-Anforderungen an Ihren Ursprungs-Server weitergeleitet werden und separate Versionen Ihrer Objekte basierend auf den Cookie-Werten, die weitergeleitet werden. Wenn Sie dies tun, verwendet CloudFront einige oder alle Cookies in Viewer-Anforderungen – je nachdem, welche gemäß der Konfiguration weitergeleitet werden –, um ein Objekt im Cache eindeutig zu identifizieren.

Nehmen wir beispielsweise an, dass Anfragen für locations.html ein country-Cookie enthalten, das entweder den Wert uk oder fr hat. Wenn Sie CloudFront so konfigurieren, dass Ihre Objekte auf der Grundlage des Werts des country-Cookies zwischengespeichert werden, leitet CloudFront Anforderungen für locations.html an den Ursprung weiter und fügt das country-Cookie und den Cookie-Werte ein. Ihr Ursprung gibt locations.html zurück, und CloudFront speichert das Objekt einmal für Anforderungen zwischen, in denen der Wert des country-Cookies uk ist, und einmal für Anforderungen, in denen der Wert fr ist.

Wichtig

Amazon S3 und einige HTTP-Server verarbeiten keine Cookies. Konfigurieren Sie CloudFront nicht so, dass Cookies an einen Ursprung weitergeleitet werden, der keine Cookies verarbeitet oder seine Antwort aufgrund von Cookies nicht variiert. Dies hat zur Folge, dass CloudFront weitere Anforderungen für dasselbe Objekt an den Ursprung weiterleitet, wodurch die Leistung verringert und die Last auf den Ursprung erhöht wird. Wenn in Anbetracht des vorherigen Beispiels Ihr Ursprung das country-Cookie nicht verarbeitet oder immer die gleiche Version von locations.html an CloudFront zurückgibt, unabhängig vom Wert des country-Cookies, konfigurieren Sie CloudFront nicht so, dass dieses Cookie weitergeleitet wird.

Ist Ihr benutzerdefinierter Ursprung dagegen von einem bestimmten Cookie abhängig oder sendet er verschiedene Antworten basierend auf einem Cookie, konfigurieren Sie CloudFront so, dass dieses Cookie an den Ursprung weitergeleitet wird. Andernfalls wird das Cookie von CloudFront entfernt, bevor die Anforderung an den Ursprung weitergeleitet wird.

Zum Konfigurieren der Cookie-Weiterleitung aktualisieren Sie das Cache-Verhalten Ihrer Verteilung. Weitere Informationen über Cache-Verhalten finden Sie unter Einstellungen für das Cache-Verhalten, insbesondere in den Abschnitten Cookies weiterleiten und Cookies auf Whitelist setzen.

Sie können jedes Cache-Verhalten so konfigurieren, dass eine der folgenden Aktionen ausgeführt wird:

  • Weiterleitung aller Cookies an Ihren Ursprung – CloudFront fügt alle Cookies an, die vom Viewer gesendet werden, wenn Anforderungen an den Ursprung weitergeleitet werden. Wenn Ihr Ursprung eine Antwort zurückgibt, speichert CloudFront die Antwort unter Verwendung die Cookies-Namen und -Werte in der Viewer-Anforderung zwischen. Wenn die Ursprungsantwort Set-Cookie-Header enthält, gibt CloudFront sie mit dem angeforderten Objekt an den Viewer zurück. CloudFront speichert auch die Set-Cookie-Header mit dem vom Ursprung zurückgegebenen Objekt zwischen und sendet diese Set-Cookie-Header an Viewer für alle Cache-Treffer.

  • Weiterleiten einer Whitelist von Cookies, die Sie festlegen – CloudFront entfernt alle Cookies, die der Viewer sendet, die sich nicht auf der Whitelist befinden, bevor eine Anforderung an den Ursprung weitergeleitet wird. CloudFront speichert die Antwort unter Verwendung der Cookies-Namen und -Werte auf der Whitelist in der Viewer-Anforderung zwischen. Wenn die Ursprungsantwort Set-Cookie-Header enthält, gibt CloudFront sie mit dem angeforderten Objekt an den Viewer zurück. CloudFront speichert auch die Set-Cookie-Header mit dem vom Ursprung zurückgegebenen Objekt zwischen und sendet diese Set-Cookie-Header an Viewer für alle Cache-Treffer.

    Weitere Informationen zum Angeben von Platzhaltern in Cookie-Namen in einer Whitelist finden Sie unter Cookies auf Whitelist setzen.

    Informationen zum aktuellen Kontingent für die Anzahl von Cookie-Namen, die Sie für jedes Cache-Verhalten auf die Whitelist setzen können, oder zum Anfordern eines höheren Kontingents finden Sie unter Kontingente für Abfragezeichenfolgen (Legacy-Cache-Einstellungen).

  • Kein Weiterleiten von Cookies an Ihren Ursprung – CloudFront speichert Ihre Objekte nicht auf der Grundlage von Cookie-Werten, die vom Viewer gesendet werden, zwischen. Außerdem entfernt CloudFront Cookies, bevor Anforderungen an Ihren Ursprung weitergeleitet werden, und entfernt Set-Cookie-Header aus Antworten, bevor Antworten an Ihre Viewer zurückgegeben werden.

Beachten Sie die folgenden Informationen zur Angabe des Cookies, das Sie weiterleiten möchten:

Zugriffsprotokolle

Wenn Sie CloudFront so konfigurieren, dass Anforderungen und Cookies protokolliert werden, protokolliert CloudFront alle Cookies und alle Cookie-Attribute, auch wenn Sie CloudFront so konfigurieren, dass keine Cookies an Ihren Ursprung weitergeleitet werden, oder wenn Sie CloudFront so konfigurieren, dass nur eine Whitelist bestimmter Cookies weitergeleitet wird. Weitere Informationen zur CloudFront-Protokollierung finden Sie unter Konfigurieren und Verwenden von Standardprotokollen (Zugriffsprotokolle).

Groß-/Kleinschreibung

Bei Cookie-Namen und -Werten muss die Groß-/Kleinschreibung beachtet werden. Wenn zum Beispiel CloudFront so konfiguriert ist, dass alle Cookies weitergeleitet werden, und zwei Viewer-Anforderungen für dasselbe Objekt Cookies haben, die abgesehen von der Groß-/Kleinschreibung identisch sind, speichert CloudFront das Objekt zweimal.

CloudFront sortiert Cookies

Wenn CloudFront so konfiguriert ist, dass Cookies (alle oder eine Whitelist) weitergeleitet werden, sortiert CloudFront die Cookies in natürlicher Reihenfolge nach Cookie-Namen, bevor die Anforderung an Ihren Ursprung weitergeleitet wird.

If-Modified-Since und If-None-Match

If-Modified-Since und If-None-Match bedingte Anforderungen werden nicht unterstützt, wenn CloudFront so konfiguriert sind, dass Cookies (alle oder eine Whitelist) weitergeleitet werden.

Standard-Name-Wert-Paar-Format erforderlich

Cookie-Header werden von CloudFront nur weitergeleitet, wenn der Wert dem Standard-Name-Wert-Paar-Format entspricht. Beispiel: "Cookie: cookie1=value1; cookie2=value2".

Deaktivieren der Zwischenspeicherung von Set-Cookie-Headern

Wenn CloudFront so konfiguriert ist, dass Cookies an den Ursprung (alle oder eine Whitelist) weitergeleitet werden, werden auch die Set-Cookie-Header zwischengespeichert, die in der Ursprungsantwort empfangen wurden. CloudFront schließt diese Set-Cookie-Header in seine Antwort auf den ursprünglichen Viewer ein und schließt sie auch in nachfolgenden Antworten ein, die aus dem CloudFront-Cache bereitgestellt werden.

Wenn Sie Cookies an Ihrem Ursprung erhalten möchten, aber nicht wollen, dass CloudFront die Set-Cookie-Header in den Antworten Ihres Ursprungs zwischenspeichert, konfigurieren Sie Ihren Ursprung so, dass ein Cache-Control-Header mit einer no-cache-Direktive hinzugefügt wird, Set-Cookie als Feldname angibt. Beispiel: Cache-Control: no-cache="Set-Cookie". Weitere Informationen finden Sie unter Response Cache-Control-Direktiven im Hypertext Transfer Protocol (HTTP/1.1): Caching Standard.

Maximallänge von Cookie-Namen

Wenn Sie CloudFront so konfigurieren dass eine Whitelist bestimmter Cookies an Ihren Ursprung weitergeleitet wird, darf die Gesamtzahl der Bytes in allen Cookie-Namen, die von CloudFront weitergeleitet werden sollen, 512 minus der Anzahl der Cookies, die Sie weiterleiten, nicht überschreiten. Wenn Sie CloudFront beispielsweise so konfigurieren, dass 10 Cookies an Ihren Ursprung weitergeleitet werden, darf die Gesamtlänge der Namen der 10 Cookies nicht größer sein als 502 Bytes (512 – 10).

Wenn Sie CloudFront so konfigurieren, dass alle Cookies an Ihren Ursprung weitergeleitet werden, ist die Länge der Cookie-Namen unerheblich.

Weitere Informationen zur Verwendung der CloudFront-Konsole zum Aktualisieren einer Verteilung, damit CloudFront Cookies an den Ursprung weiterleitet, finden Sie unter Aktualisieren einer Verteilung. Informationen zur Verwendung der CloudFront-API zum Aktualisieren einer Verteilung finden Sie unter UpdateDistribution in der Amazon CloudFront API-Referenz.