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.
Wie CloudFront werden Teilanfragen für ein Objekt (BereichGETs) verarbeitet
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 es eine Range GET
Anfrage CloudFront empfängt, überprüft es den Cache an dem Edge-Standort, der die Anfrage empfangen hat. Wenn der Cache an dieser Edge-Position bereits das gesamte Objekt oder den angeforderten Teil des Objekts enthält, wird CloudFront sofort der angeforderte Bereich aus dem Cache bereitgestellt.
Wenn der Cache den angeforderten Bereich nicht enthält, CloudFront wird die Anfrage an den Ursprung weitergeleitet. (Um die Leistung zu optimieren, wird CloudFront möglicherweise ein größerer Bereich angefordert, als der Client im angefordert hatRange GET
.) Der nächste Schritt hängt davon ab, ob der Ursprung Range GET
-Anfragen unterstützt:
-
Wenn der Ursprung
Range GET
Anfragen unterstützt, gibt er den angeforderten Bereich zurück. CloudFront bedient den angeforderten Bereich und speichert ihn auch für future Anfragen. (Amazon S3 unterstütztRange GET
Anfragen, ebenso wie viele HTTP Server.) -
Wenn der Ursprung keine
Range GET
Anfragen unterstützt, wird das gesamte Objekt zurückgegeben. CloudFront bedient die aktuelle Anfrage, indem es das gesamte Objekt sendet und es gleichzeitig für future Anfragen zwischenspeichert. Nachdem CloudFront das gesamte Objekt in einem Edge-Cache zwischengespeichert wurde, reagiert es auf neueRange GET
Anfragen, indem es den angeforderten Bereich bereitstellt.
In beiden Fällen CloudFront beginnt die Bereitstellung des angeforderten Bereichs oder Objekts für den Endbenutzer, sobald das erste Byte vom Ursprung eintrifft.
Anmerkung
Wenn der Betrachter eine Range GET
Anfrage stellt und der Ursprung CloudFront zurückkehrtTransfer-Encoding: chunked
, wird das gesamte Objekt anstelle des angeforderten Bereichs an den Betrachter zurückgegeben.
CloudFront folgt im Allgemeinen der RFC Spezifikation für den Range
Header. Wenn Ihre Range
Header jedoch nicht den folgenden Anforderungen entsprechen, wird der HTTP Statuscode 200
mit dem vollständigen Objekt anstelle des Statuscodes 206
mit den angegebenen Bereichen CloudFront zurückgegeben:
-
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
Anforderungsheader finden Sie unter Bereichsanforderungen
Verwenden von Bereichsanforderungen zum Zwischenspeichern großer Objekte
Wenn die Zwischenspeicherung aktiviert ist, werden Objekte, die größer als 50 GB sind, CloudFront weder abgerufen noch zwischengespeichert. Wenn ein Ursprung angibt, dass das Objekt größer als diese Größe ist (im Content-Length
Antwort-Header), CloudFront wird die Verbindung zum Ursprung geschlossen und es wird ein Fehler an den Viewer zurückgegeben. ( CloudFront Kann bei deaktiviertem Caching ein Objekt, das größer als diese Größe ist, vom Ursprung abrufen und an den Betrachter weitergeben. Zwischenspeichert das Objekt jedoch CloudFront nicht.)
Bei Bereichsanforderungen können CloudFront Sie jedoch ein Objekt zwischenspeichern, das größer als die maximale zwischenspeicherbare Dateigröße ist.
Beispiel
-
Stellen Sie sich einen Ursprung mit einem 100-GB-Objekt vor. Ruft bei aktiviertem Caching CloudFront kein Objekt dieser Größe ab oder speichert es nicht im Cache. Der Viewer kann jedoch mehrere Bereichsanforderungen senden, um dieses Objekt in Teilen abzurufen, wobei die Teile jeweils kleiner als 50 GB sind.
-
Der Betrachter kann das Objekt in Teilen von 20 GB anfordern, indem er eine Anfrage mit dem Header
Range: bytes=0-21474836480
zum Abrufen des ersten Teils, eine weitere Anfrage mit dem HeaderRange: bytes=21474836481-42949672960
zum Abrufen des nächsten Teils usw. sendet. -
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 er jeden der 20 GB-Teile des Objekts im Cache und kann auf nachfolgende Anfragen für denselben Teil aus dem Cache antworten.