Zwischenspeichern von Inhalten auf der Grundlage von Abfragezeichenfolgeparametern - Amazon CloudFront

Zwischenspeichern von Inhalten auf der Grundlage von Abfragezeichenfolgeparametern

Einige Webanwendungen verwenden zum Senden von Informationen an den Ursprung Abfragezeichenfolgen. Eine Abfragezeichenfolge ist der Teil einer Webanfrage nach dem Zeichen ?. Die Zeichenfolge kann einen oder mehrere durch das Zeichen & getrennte Parameter enthalten. Im folgenden Beispiel enthält die Abfragezeichenfolge zwei Parameter, color=red und size=large:

https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

Bei Verteilungen können Sie wählen, ob CloudFront Abfragezeichenfolgen an Ihren Ursprung weiterleiten und ob Ihr Inhalt auf der Grundlage von allen oder von ausgewählten Parametern zwischengespeichert werden soll. Warum kann dies sinnvoll sein? Betrachten Sie das folgende Beispiel.

Angenommen, Ihre Website ist in fünf Sprachen verfügbar. Die Verzeichnisstruktur und Dateinamen für alle fünf Versionen der Website sind identisch. Wenn ein Benutzer Ihre Website aufruft, beinhalten die an CloudFront weitergeleiteten Anforderungen einen Sprachabfrage-Zeichenfolgeparameter auf der Grundlage der vom Benutzer ausgewählten Sprache. Sie können CloudFront so konfigurieren, dass Abfragezeichenfolgen auf der Grundlage des Sprachparameters an den Ursprung weitergeleitet und Zwischenspeicherungen vorgenommen werden. Wenn Sie Ihren Webserver so konfigurieren, dass die Version einer bestimmten Seite zurückgegeben wird, die der ausgewählten Sprache entspricht, speichert CloudFront alle Sprachversionen auf der Grundlage des Werts des Sprachabfrage-Zeichenfolgeparameters separat zwischen.

In diesem Beispiel, in dem die Hauptseite Ihrer Website main.html ist, führen die folgenden fünf Anforderungen dazu, dass CloudFront main.html fünfmal zwischenspeichert, einmal für jeden Wert des Sprachabfrage-Zeichenfolgenparameters:

  • https://d111111abcdef8.cloudfront.net/main.html?language=de

  • https://d111111abcdef8.cloudfront.net/main.html?language=en

  • https://d111111abcdef8.cloudfront.net/main.html?language=es

  • https://d111111abcdef8.cloudfront.net/main.html?language=fr

  • https://d111111abcdef8.cloudfront.net/main.html?language=jp

Beachten Sie Folgendes:

  • Einige HTTP-Server verarbeiten keine Abfragezeichenfolgeparameter und geben daher nicht unterschiedliche Versionen eines Objekts auf der Grundlage der Parameterwerte zurück. Wenn Sie bei diesen Ursprüngen CloudFront so konfigurieren, dass Abfragezeichenfolgeparameter an den Ursprung weitergeleitet werden, speichert CloudFront weiterhin auf der Grundlage der Parameterwerte zwischen, selbst wenn der Ursprung für jeden Parameterwert identische Versionen des Objekts an CloudFront zurückgibt.

  • Damit Abfragezeichenfolgeparameter wie im obigen Beispiel beschrieben mit den Sprachen funktionieren, müssen Sie das Zeichen & als Trennzeichen zwischen den Abfragezeichenfolgeparametern verwenden. Wenn Sie ein anderes Trennzeichen verwenden, erhalten Sie möglicherweise unerwartete Ergebnisse, je nachdem, welche Parameter CloudFront als Basis für die Zwischenspeicherung verwenden soll und in welcher Reihenfolge sie in der Abfragezeichenfolge angezeigt werden.

    Die folgenden Beispiele zeigen, was passiert, wenn Sie ein anderes Trennzeichen verwenden und CloudFront so konfigurieren, dass die Zwischenspeicherung nur auf der Grundlage des color-Parameters erfolgt:

    • In der folgenden Anforderung speichert CloudFront Ihre Inhalte auf der Grundlage des Werts des Parameters color zwischen. CloudFront interpretiert den Wert jedoch als red;size=large:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red;size=large

    • In der folgenden Anforderung speichert CloudFront Ihre Inhalte zwischen, jedoch nicht basierend auf den Abfragezeichenfolgeparametern. Der Grund hierfür ist, dass Sie CloudFront so konfiguriert haben, dass die Zwischenspeicherung auf der Grundlage des Parameters color erfolgt, CloudFront die folgende Zeichenfolge jedoch so interpretiert, dass sie nur einen size-Parameter mit dem Wert large;color=red enthält:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large;color=red

Sie können CloudFront für eine der folgenden Aktionen konfigurieren:

  • Keine Abfragezeichenfolge an den Ursprung weiterleiten. Wenn Sie keine Abfragezeichenfolgen weiterleiten, speichert CloudFront nicht auf der Grundlage von Abfragezeichenfolgeparametern zwischen.

  • Abfragezeichenfolgen an den Ursprung weiterleiten und auf der Grundlage aller Parameter in der Abfragezeichenfolge zwischenspeichern.

  • Abfragezeichenfolgen an den Ursprung weiterleiten und auf der Grundlage spezifischer Parameter in der Abfragezeichenfolge zwischenspeichern.

Weitere Informationen finden Sie unter Optimieren der Zwischenspeicherung.

Konsolen- und API-Einstellungen für die Weiterleitung und Zwischenspeicherung von Abfragezeichenfolgen

Informationen zum Konfigurieren der Weiterleitung und Zwischenspeicherung von Abfragezeichenfolgen in der CloudFront-Konsole finden Sie in den folgenden Einstellungen in Werte, die Sie beim Erstellen oder Aktualisieren einer Verteilung angeben:

Informationen zum Konfigurieren der Weiterleitung und Zwischenspeicherung von Abfragezeichenfolgen mit der CloudFront-API finden Sie in den folgenden Einstellungen unter DistributionConfig und DistributionConfigWithTags in der Amazon-CloudFront-API-Referenz:

  • QueryString

  • QueryStringCacheKeys

Optimieren der Zwischenspeicherung

Wenn Sie CloudFront konfigurieren, basierend auf Abfragezeichenfolgenparametern zwischenzuspeichern, können Sie die folgenden Schritte ausführen, um die Anzahl der Anforderungen reduzieren, die von CloudFront an Ihren Ursprung weitergeleitet werden. Wenn CloudFront-Edge-Standorte Objekte bereitstellen, reduzieren Sie die Belastung Ihres Ursprungs-Servers und reduzieren die Latenz, da Objekte von Standorten bereitgestellt werden, die näher an Ihren Benutzern liegen.

Zwischenspeichern auf der ausschließlichen Grundlage von Parametern, für die Ihr Ursprung verschiedene Versionen eines Objekts zurückgibt

Für jeden Abfragezeichenfolgeparameter, den Ihre Webanwendung an CloudFront weiterleitet, leitet CloudFront Anforderungen für jeden Parameterwert an Ihren Ursprung weiter und speichert eine separate Version des Objekts für jeden Parameterwert zwischen. Dies gilt auch, wenn Ihr Ursprung unabhängig vom Parameterwert immer dasselbe Objekt zurückgibt. Bei mehreren Parametern multiplizieren sich die Anzahl der Anfragen und die Anzahl der Objekte. Wenn beispielsweise Anforderungen für ein Objekt zwei Parameter enthalten, die jeweils drei unterschiedliche Werte aufweisen, speichert CloudFront sechs Versionen dieses Objekts zwischen, sofern Sie die anderen Empfehlungen in diesem Abschnitt befolgen.

Wir empfehlen, CloudFront so zu konfigurieren, dass die Zwischenspeicherung auf ausschließlicher Grundlage der Abfragezeichenfolgeparameter erfolgt, für die Ihr Ursprung verschiedene Versionen zurückgibt, und dass Sie sorgfältig abwägen, welche Vorteile die Zwischenspeicherung auf der Grundlage aller Parameter hat. Nehmen wir beispielsweise an, dass Sie eine Einzelhandels-Website besitzen. Sie haben Bilder einer Jacke in sechs verschiedenen Farben und es gibt die Jacke in zehn verschiedenen Größen. Die Bilder, die Sie von der Jacke haben, zeigen die verschiedenen Farben, jedoch nicht die verschiedenen Größen. Um die Zwischenspeicherung zu optimieren, sollten Sie CloudFront so konfigurieren, dass die Zwischenspeicherung auf ausschließlicher Grundlage der Farbparameter erfolgt und nicht auf Grundlage der Größenparameter. Dies erhöht die Wahrscheinlichkeit, dass CloudFront eine Anforderung aus dem Cache bereitstellen kann, um die Leistung zu verbessern und die Auslastung des Ursprungs zu reduzieren.

Parameter immer in der gleichen Reihenfolge auflisten

Die Reihenfolge der Parameter in Abfragezeichenfolgen ist wichtig. Im folgenden Beispiel sind die Abfragezeichenfolgen identisch, abgesehen davon, dass die Parameter eine andere Reihenfolge aufweisen. Dadurch wird CloudFront veranlasst, zwei separate Anforderungen für image.jpg an Ihren Ursprung weiterzuleiten und zwei verschiedene Versionen des Objekts zwischenzuspeichern:

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large&color=red

Wir empfehlen, Parameternamen immer in der gleichen Reihenfolge aufzulisten, beispielsweise in alphabetischer Reihenfolge.

Immer dieselbe Schreibweise für Parameternamen und -werte verwenden

CloudFront berücksichtigt bei der Zwischenspeicherung auf der Grundlage von Abfragezeichenfolgeparametern die Schreibweise von Parameternamen und -werten. Im folgenden Beispiel sind die Abfragezeichenfolgen identisch, abgesehen von der Schreibweise der Parameternamen und -werte. Dadurch wird CloudFront veranlasst, vier separate Anforderungen für image.jpg an Ihren Ursprung weiterzuleiten und vier verschiedene Versionen des Objekts zwischenzuspeichern:

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=Red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?Color=red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?Color=Red

Wir empfehlen, konsistent dieselbe Schreibweise für Parameternamen und -werte zu verwenden, beispielsweise nur Kleinbuchstaben.

Keine Parameternamen verwenden, die mit signierten URLs in Konflikt stehen

Wenn Sie signierte URLs verwenden, um den Zugriff auf Ihre Inhalte einzuschränken (wenn Sie vertrauenswürdiger Aussteller zu Ihrer Verteilung hinzugefügt haben), entfernt CloudFront die folgenden Abfragezeichenfolgeparameter, bevor der Rest Ihrer URL an Ihren Ursprung weitergeleitet wird:

  • Expires

  • Key-Pair-Id

  • Policy

  • Signature

Wenn Sie signierte URLs verwenden und CloudFront so konfigurieren möchten, dass Abfragezeichenfolgen an Ihren Ursprung weitergeleitet werden, können Ihre eigenen Abfragezeichenfolgeparameter nicht mit Expires, Key-Pair-Id, Policy oder Signature benannt werden.

Parameter für Abfragezeichenfolgen und CloudFront-Standardprotokolle abfragen (Zugriffsprotokolle)

Wenn Sie die Protokollierung aktivieren, protokolliert CloudFront die vollständige URL einschließlich der Parameter für Abfragezeichenfolgen. Dies gilt unabhängig davon, ob Sie CloudFront so konfiguriert haben, dass Abfragezeichenfolgen an den Ursprung weitergegeben werden. Weitere Informationen zur CloudFront-Protokollierung finden Sie unter Konfigurieren und Verwenden von Standardprotokollen (Zugriffsprotokolle).