Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
So CloudFront verarbeitet Teilanforderungen für ein Objekt (Bereichs-GETs)
Bei großen Objekten kann der Viewer (Webbrowser oder anderer Client) mehrere GET
-Anforderungen stellen und verwendet den Range
-Anforderungs-Header, um das Objekt in kleineren Teilen herunterzuladen. Diese Anfragen für Bereiche von Bytes, manchmal auch als Range GET
-Anfragen bezeichnet, steigern die Effizienz von Teil-Downloads und die Wiederherstellung nach teilweise fehlgeschlagenen Übertragungen.
Wenn eine Range GET
Anforderung CloudFront empfängt, überprüft es den Cache am Edge-Standort, der die Anforderung empfangen hat. Wenn der Cache an diesem Edge-Standort bereits das gesamte Objekt oder den angeforderten Teil des Objekts enthält, stellt CloudFront sofort den angeforderten Bereich aus dem Cache bereit.
Wenn der Cache den angeforderten Bereich nicht enthält, CloudFront leitet die Anforderung an den Ursprung weiter. (Um die Leistung zu optimieren, CloudFront kann einen größeren Bereich anfordern als der Client, der in der angefordert wurdeRange GET
.) Der nächste Schritt hängt davon ab, ob der Ursprung Range GET
-Anfragen unterstützt:
-
Wenn der Ursprung
Range GET
Anforderungen unterstützt: Er gibt den angeforderten Bereich zurück. CloudFront bedient den angeforderten Bereich und speichert ihn auch für zukünftige Anforderungen zwischen. (Amazon S3 unterstütztRange GET
-Anforderungen, ebenso wie viele HTTP-Server.) -
Wenn der Ursprung keine
Range GET
Anfragen unterstützt: Es gibt das gesamte Objekt zurück. CloudFront bedient die aktuelle Anfrage, indem es das gesamte Objekt sendet und es gleichzeitig für zukünftige Anfragen zwischenspeichert. Nachdem das gesamte Objekt in einem Edge-Cache CloudFront zwischengespeichert hat, antwortet es auf neueRange GET
Anfragen, indem es den angeforderten Bereich bedient.
In beiden Fällen CloudFront beginnt damit, dem Endbenutzer den angeforderten Bereich oder das angeforderte Objekt bereitzustellen, sobald das erste Byte vom Ursprung eintrifft.
Anmerkung
Wenn der Betrachter eine -Range GET
Anforderung stellt und der Ursprung zurückgibtTransfer-Encoding: chunked
, CloudFront gibt das gesamte Objekt an den Betrachter statt an den angeforderten Bereich zurück.
CloudFront folgt im Allgemeinen der RFC-Spezifikation für den -Range
Header. Wenn Ihre Range
-Header die folgenden Anforderungen jedoch nicht erfüllen, gibt CloudFront HTTP-Statuscode 200
mit dem vollständigen Objekt anstelle von Statuscode 206
mit den angefragten Bereichen zurück:
-
Die Bereiche müssen in aufsteigender Reihenfolge aufgeführt sein. Beispielweise ist
100-200,300-400
gültig,300-400,100-200
hingegen nicht. -
Die Bereiche dürfen sich nicht überschneiden. Beispielsweise ist
100-200,150-250
nicht gültig. -
Alle Bereichsspezifikationen müssen gültig sein. Beispielsweise können Sie keinen negativen Wert als Teil eines Bereichs angeben.
Weitere Informationen zum Range
-Anforderungs-Header finden Sie im Abschnitt zu Bereichsanforderungen
Verwenden von Bereichsanforderungen zum Zwischenspeichern großer Objekte
Wenn das Caching aktiviert ist, ruft kein Objekt ab, das größer als 50 GB ist, und CloudFront speichert es nicht im Cache. Wenn ein Ursprung angibt, dass das Objekt größer als diese Größe ist (im Content-Length
Antwort-Header), CloudFront schließt die Verbindung zum Ursprung und gibt einen Fehler an den Viewer zurück. (Wenn das Caching deaktiviert ist, CloudFront kann ein Objekt, das größer als diese Größe ist, vom Ursprung abrufen und an den Viewer übergeben. Das Objekt CloudFront wird jedoch nicht zwischengespeichert.)
Bei Bereichsanfragen können Sie jedoch verwenden, CloudFront um ein Objekt zwischenzuspeichern, das größer als die maximale cachefähige Dateigröße ist. Nehmen wir beispielsweise einen Ursprung mit einem Objekt mit 100 GB an. Wenn das Caching aktiviert CloudFront ist, ruft ein Objekt nicht so groß ab oder speichert es im Cache. Der Viewer kann jedoch mehrere Bereichsanforderungen senden, um dieses Objekt in Teilen abzurufen, wobei die Teile jeweils kleiner als 50 GB sind. Zum Beispiel kann der Viewer das Objekt in 20 GB-Teilen anfordern, indem er eine Anforderung mit dem Header Range: bytes=0-21474836480
sendet, um den ersten Teil abzurufen, eine weitere Anforderung mit dem Header Range: bytes=21474836481-42949672960
, um den nächsten Teil abzurufen und so weiter. Nachdem der Viewer alle Teile empfangen hat, kann er sie kombinieren, um das ursprüngliche Objekt mit 100 GB zu erstellen. In diesem Fall CloudFront speichert jeden der 20 GB Teile des Objekts zwischen und kann auf nachfolgende Anfragen für denselben Teil aus dem Cache antworten.