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 GETAnfragen 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-Anforderungen, ebenso wie viele HTTP-Server.) -
Wenn der Ursprung keine
Range GETAnfragen 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 GETAnfragen, 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 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-400gültig,300-400,100-200hingegen nicht. -
Die Bereiche dürfen sich nicht überschneiden. Beispielsweise ist
100-200,150-250nicht 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, wird ein Objekt, das größer als 50 GB ist, CloudFront nicht abgerufen oder 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
-
Gehen wir von einem Ursprung mit einem Objekt mit 100 GB aus. Wenn das Caching aktiviert ist, CloudFront wird ein so großes Objekt nicht abgerufen oder zwischengespeichert. Der Viewer kann jedoch mehrere Bereichsanforderungen senden, um dieses Objekt in Teilen abzurufen, wobei die Teile jeweils kleiner als 50 GB sind.
-
Der Viewer kann das Objekt in 20-GB-Teilen anfordern, indem er eine Anforderung mit dem Header
Range: bytes=0-21474836480sendet, um den ersten Teil abzurufen, eine weitere Anforderung mit dem HeaderRange: 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 werden alle 20 GB-Teile des Objekts CloudFront zwischengespeichert und es kann auf nachfolgende Anfragen für denselben Teil aus dem Cache reagiert werden.
Bei einer Bereichsanforderung für ein komprimiertes Objekt basiert der angeforderte Bytebereich auf der komprimierten Größe und nicht auf der Originalgröße des Objekts. Weitere Informationen zur Komprimierung von Dateien finden Sie unter Bereitstellen von komprimierten Dateien.