Zwischenspeichern von Inhalten auf der Grundlage von Anfrage-Headern - Amazon CloudFront

Zwischenspeichern von Inhalten auf der Grundlage von Anfrage-Headern

In CloudFront können Sie wählen, ob CloudFront Header an Ihren Ursprung weiterleiten und separate Versionen Ihrer Objekte basierend auf Cookiewerten in Viewer-Anforderungen zwischenspeichern soll. Auf diese Weise können Sie auf der Grundlage des Geräts, das der Benutzers verwendet, des Standorts des Viewers, der Spracheinstellung des Viewers und einer Vielzahl anderer Kriterien unterschiedliche Versionen Ihrer Inhalte bereitstellen.

Header und Verteilungen – Übersicht

Standardmäßig berücksichtigt CloudFront keine Header bei der Zwischenspeicherung Ihrer Objekte an Edge-Standorten. Wenn Ihr Ursprung zwei Objekte zurückgibt, die sich nur durch die Werte in den Anforderungs-Headern unterscheiden, speichert CloudFront nur eine Version des Objekts zwischen.

Sie können CloudFront so konfigurieren, dass Header an den Ursprung weitergeleitet werden. Dies bewirkt, dass CloudFront mehrere Versionen eines Objekts auf der Grundlage der Werte in einem oder mehreren Anforderungs-Headern zwischenspeichert. Um CloudFront so zu konfigurieren, dass es Objekte basierend auf den Werten bestimmter Header im Cache speichert, geben Sie Einstellungen für das Cache-Verhalten für Ihre Verteilung vor. Weitere Informationen finden Sie unter Cache-Speicherung basierend auf ausgewählten Anforderungs-Headern.

Nehmen wir beispielsweise an, dass Viewer-Anforderungen für logo.jpg einen benutzerdefinierten Product-Header enthalten, der entweder den Wert Acme oder Apex hat. Wenn Sie CloudFront so konfigurieren, dass Ihre Objekte auf der Grundlage des Werts des Product-Headers zwischengespeichert werden, leitet CloudFront Anforderungen für logo.jpg an den Ursprung weiter und fügt den Product-Header und die Header-Werte ein. CloudFront speichert logo.jpg einmal für Anforderungen zwischen, in denen der Wert des Product-Headers Acme ist, und einmal für Anforderungen, bei denen der Wert Apex ist.

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

  • Weiterleiten aller Header an Ihren Ursprung

    Wichtig

    Wenn Sie CloudFront so konfigurieren, dass alle Header an Ihren Ursprung weitergeleitet werden, speichert CloudFront die Objekte mit diesem Cache-Verhalten nicht zwischen. Stattdessen werden alle Anfragen an den Ursprung gesendet.

  • Weiterleiten einer Whitelist von Headers, die Sie festlegen. CloudFront speichert Ihre Objekte auf der Grundlage der Werte in den Headern zwischen. Außerdem leitet CloudFront die standardmäßig weitergeleiteten Header weiter, aber speichert Ihre Objekte ausschließlich auf der Grundlage der Header, die Sie angeben.

  • Weiterleiten nur der Standard-Header. Bei dieser Konfiguration speichert CloudFront Ihre Objekte nicht auf der Grundlage der Werte im Anforderungs-Header zwischen.

Informationen zum aktuellen Kontingent für die Anzahl von Headern, 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 Header.

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

Auswählen der Header, auf denen die Zwischenspeicherung basieren soll

Die Header, die Sie an den Ursprung weiterleiten können und auf deren Grundlage die Zwischenspeicherung in CloudFront erfolgt, hängen davon ab, ob es sich bei Ihrem Ursprung um einen Amazon S3-Bucket oder um einen benutzerdefinierten Ursprung handelt.

  • Amazon S3 – Sie können CloudFront so konfigurieren, dass Ihre Objekte basierend auf einer Reihe von bestimmten Headern weitergeleitet und zwischengespeichert werden (siehe die folgende Liste der Ausnahmen). Allerdings empfehlen wir, möglichst keine Header mit einem Amazon S3-Ursprung auf die Whitelist zu setzen, es sei denn, Sie implementieren Cross-Origin Resource Sharing (CORS, ursprungsübergreifende gemeinsame Nutzung von Ressourcen) oder möchten Inhalte mit Lambda@Edge in Ereignissen auf Ursprungsseite personalisieren.

    • Zum Konfigurieren von CORS müssen Sie Header weiterleiten, die CloudFront erlauben, Inhalte für Websites zu verteilen, die für Cross-Origin Resource Sharing (CORS, ursprungsübergreifende gemeinsame Nutzung von Ressourcen) aktiviert sind. Weitere Informationen finden Sie unter Konfigurieren von CloudFront, sodass es CORS-Einstellungen berücksichtigt.

    • Um Inhalte mithilfe von Headern zu personalisieren, die Sie an Ihren Amazon S3-Ursprung weiterleiten, schreiben und fügen Sie Lambda@Edge-Funktionen hinzu und ordnen diese Ihrer CloudFront-Verteilung zu, damit sie durch ein Ereignis auf Ursprungsseite ausgelöst werden. Weitere Informationen zum Verwenden von Headern, um Inhalte zu personalisieren, finden Sie unter Personalisieren von Inhalten nach Land oder Gerätetyp-Header – Beispiele.

      Wir empfehlen, möglichst keine Header auf die Whitelist zu setzen, die Sie nicht zum Personalisieren von Inhalten verwenden, da das Weiterleiten zusätzlicher Header zu einer Verringerung der Cache-Trefferrate führen kann. Das bedeutet, dass CloudFront nicht in der Lage ist, mehr Anfragen über Edge-Caches zu verarbeiten als einen Anteil aller Anfragen.

  • Benutzerdefinierter Ursprung – Sie können CloudFront so konfigurieren, dass die Zwischenspeicherung auf der Grundlage des Werts eines beliebigen Anforderungs-Headers erfolgt, mit Ausnahme der folgenden:

    • Connection

    • Cookie – Wenn die Weiterleitung und Zwischenspeicherung auf der Grundlage von Cookies erfolgen soll, verwenden Sie eine separate Einstellung in Ihrer Verteilung. Weitere Informationen finden Sie unter Zwischenspeichern von Inhalten auf der Grundlage von Cookies.

    • Host (for Amazon S3 origins)

    • Proxy-Authorization

    • TE

    • Upgrade

    Sie können CloudFront so konfigurieren, dass Objekte auf der Grundlage von Werten in den Headern Date und User-Agent zwischengespeichert werden; dies wird jedoch nicht empfohlen. Diese Header können eine Vielzahl möglicher Werte enthalten; das Zwischenspeichern auf Basis dieser Werte würde dazu führen, dass wesentlich mehr Anforderungen von CloudFront an Ihren Ursprungs-Server weitergeleitet werden.

Eine vollständige Liste der HTTP-Anfrage-Header und Informationen dazu, wie CloudFront diese verarbeitet, finden Sie unter HTTP-Anfrage-Header und CloudFront-Verhalten (benutzerdefinierte und Amazon-S3-Ursprünge).

Konfigurieren von CloudFront, sodass es CORS-Einstellungen berücksichtigt

Wenn Sie Cross-Origin Resource Sharing (CORS) auf einem Amazon S3-Bucket oder einem benutzerdefinierten Ursprung aktiviert haben, müssen Sie bestimmte Header zum Weiterleiten auswählen, um die CORS-Einstellungen zu berücksichtigen. Die Header, die Sie weiterleiten müssen, sind abhängig vom Ursprung (Amazon S3 oder benutzerdefiniert) und von der Tatsache, ob Sie OPTIONS-Antworten zwischenspeichern möchten, unterschiedlich.

Amazon S3

  • Wenn Sie möchten, dass OPTIONS-Antworten im Cache gespeichert werden, führen Sie die folgenden Schritte aus:

    • Wählen Sie die Optionen für die Standardeinstellungen für das Cache-Verhalten aus, mit denen das Zwischenspeichern von OPTIONS-Antworten aktiviert wird.

    • Konfigurieren Sie CloudFront so, dass die folgenden Header weitergeleitet werden: Origin, Access-Control-Request-Headers und Access-Control-Request-Method.

  • Wenn Sie nicht möchten, dass OPTIONS-Antworten im Cache gespeichert werden, konfigurieren Sie CloudFront so, dass der Origin-Header zusammen mit allen Headern, die für Ihren Ursprung erforderlich sind, weitergeleitet wird (z. B. Access-Control-Request-Headers, Access-Control-Request-Method oder andere).

Benutzerdefinierte Ursprünge – Leiten Sie den Origin-Header zusammen mit anderen Headern weiter, die für Ihren Ursprung erforderlich sind.

Sie konfigurieren CloudFront zur Weiterleitung von Headern durch Whitelisting der Header in einem Cache-Verhalten für Ihre CloudFront-Verteilung. Weitere Informationen zum Einsatz der Header-Weiterleitung finden Sie unter Header und Verteilungen – Übersicht.

Weitere Informationen zu CORS und Amazon S3 finden Sie unter Aktivieren der ursprungsübergreifenden Ressourcenfreigabe im Benutzerhandbuch zu Amazon Simple Storage Service.

Konfigurieren der Zwischenspeicherung basierend auf dem Gerätetyp

Wenn Sie möchten, dass CloudFront verschiedene Versionen Ihrer Objekte basierend auf dem von einem Benutzer für die Anzeige Ihrer Inhalte verwendeten Gerät zwischenspeichert, konfigurieren Sie CloudFront so, dass der entsprechende Header an Ihren benutzerdefinierten Ursprung weitergeleitet wird:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

Basierend auf dem Wert des User-Agent-Headers setzt CloudFront den Wert dieser Header auf true oder false, bevor die Anforderung an Ihren Ursprung weitergeleitet wird. Wenn ein Gerät in mehr als eine Kategorie fällt, können mehrere Werte sei true. Beispielsweise setzt CloudFront bei einigen Tablet-Geräten möglicherweise CloudFront-Is-Mobile-Viewer und CloudFront-Is-Tablet-Viewer auf true.

Konfigurieren der Zwischenspeicherung basierend auf der Sprache des Viewers

Wenn Sie möchten, dass CloudFront verschiedene Versionen Ihrer Objekte auf der Grundlage der Sprache zwischenspeichert, die in der Anforderung angegeben ist, konfigurieren Sie CloudFront so, dass der Accept-Language-Header an Ihren Ursprung weitergeleitet wird.

Konfigurieren der Zwischenspeicherung basierend auf dem Standort des Viewers

Wenn Sie möchten, dass CloudFront verschiedene Versionen Ihrer Objekte auf der Grundlage des Landes zwischenspeichert, aus dem die Anforderung, konfigurieren Sie CloudFront so, dass der CloudFront-Viewer-Country-Header an Ihren Ursprung weitergeleitet wird. CloudFront konvertiert automatisch die IP-Adresse, über welche die Anforderung erfolgte, in einen zweistelligen Ländercode. Eine benutzerfreundliche Liste der Ländercodes, die nach Code und Ländername sortiert werden kann, finden Sie im Wikipedia-Eintrag ISO 3166-1 alpha-2.

Konfigurieren der Zwischenspeicherung basierend auf dem Protokoll der Anfrage

Wenn Sie möchten, dass CloudFront abhängig vom Anforderungsprotokoll (HTTP oder HTTPS) verschiedene Versionen Ihrer Objekte zwischenspeichert, konfigurieren Sie CloudFront so, dass der CloudFront-Forwarded-Proto-Header an Ihren Ursprung weitergeleitet wird.

Konfigurieren der Zwischenspeicherung für komprimierte Dateien

Wenn Ihr Ursprungs-Server die Brotli-Komprimierung unterstützt, können Sie den Accept-Encoding-Header auf die Whitelist setzen und die Zwischenspeicherung basierend auf dem Header durchführen. Konfigurieren Sie die Zwischenspeicherung nur dann basierend auf Accept-Encoding, wenn Ihr Ursprungs-Server abhängig vom Header unterschiedliche Inhalte bereitstellt.

Auswirkungen der Zwischenspeicherung auf der Grundlage von Headern auf die Leistung

Wenn Sie CloudFront so konfigurieren, dass eine Zwischenspeicherung basierend auf einem oder mehreren Headern erfolgt, und die Header mehr als einen möglichen Wert enthalten, leitet CloudFront mehr Anforderungen für dasselbe Objekt an Ihren Ursprungs-Server weiter. Dadurch wird die Leistung verringert und die Last auf Ihrem Ursprungs-Server erhöht. Wenn Ihr Ursprungs-Server unabhängig vom Wert eines bestimmten Headers das gleiche Objekt zurückgibt, empfehlen wir, CloudFront nicht so zu konfigurieren, dass eine Zwischenspeicherung auf der Grundlage von diesem Header erfolgt.

Wenn Sie CloudFront so konfigurieren, dass mehr als ein Header weitergeleitet wird, wirkt sich die Reihenfolge der Header in Viewer-Anforderungen nicht auf die Zwischenspeicherung aus, solange die Werte identisch sind. Wenn beispielsweise eine Anforderung die Header A:1,B:2 und eine andere Anforderung B:2,A:1 enthält, speichert CloudFront nur eine Kopie des Objekts zwischen.

Auswirkungen der Schreibweise von Headern und Header-Werten auf die Zwischenspeicherung

Wenn die Zwischenspeicherung in CloudFront auf der Grundlage von Header-Werten erfolgt, wird die Schreibweise des Header-Namens nicht berücksichtigt, die Schreibweise des Header-Werts hingegen schon:

  • Wenn Viewer-Anforderungen sowohl Product:Acme als product:Acme enthalten, speichert CloudFront ein Objekt nur einmal zwischen. Der einzige Unterschied zwischen ihnen ist die Schreibweise des Header-Namens, die sich nicht auf die Zwischenspeicherung auswirkt.

  • Wenn Viewer-Anforderungen sowohl Product:Acme als auch Product:acme enthalten, speichert CloudFront ein Objekt zweimal zwischen, da der Wert in einigen Anforderungen Acme und in anderen acme ist.

Von CloudFront an den Viewer zurückgegebene Header

Wenn CloudFront so konfiguriert wird, dass Header weitergeleitet und zwischengespeichert werden, wirkt sich dies nicht darauf aus, welche Header CloudFront an den Viewer zurückgibt. CloudFront gibt alle Header zurück, die es vom Ursprung abruft, mit einigen wenigen Ausnahmen: Weitere Informationen finden Sie im entsprechenden Thema: