Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagaimana CloudFront memproses permintaan sebagian untuk suatu objek (rentangGETs)
Untuk objek besar, penampil (browser web atau klien lain) dapat membuat beberapa GET
permintaan dan menggunakan header Range
permintaan untuk mengunduh objek di bagian yang lebih kecil. Permintaan untuk rentang byte, terkadang disebut Range GET
meminta, meningkatkan efisiensi unduhan sebagian, dan pemulihan dari transfer yang gagal sebagian.
Saat CloudFront menerima Range GET
permintaan, ia memeriksa cache di lokasi tepi yang menerima permintaan. Jika cache di lokasi tepi itu sudah berisi seluruh objek atau bagian objek yang diminta, CloudFront segera layani rentang yang diminta dari cache.
Jika cache tidak berisi rentang yang diminta, CloudFront teruskan permintaan ke asal. (Untuk mengoptimalkan kinerja, CloudFront dapat meminta rentang yang lebih besar dari yang diminta klien diRange GET
.) Apa yang terjadi selanjutnya tergantung pada apakah asal mendukung permintaan Range GET
:
-
Jika asal mendukung
Range GET
permintaan — Ini mengembalikan rentang yang diminta. CloudFront melayani rentang yang diminta dan juga menyimpannya dalam cache untuk permintaan masa depan. (Amazon S3 mendukungRange GET
permintaan, seperti halnya banyak HTTP server.) -
Jika asal tidak mendukung
Range GET
permintaan - Ini mengembalikan seluruh objek. CloudFront melayani permintaan saat ini dengan mengirimkan seluruh objek sementara juga men-cache untuk permintaan future. Setelah CloudFront cache seluruh objek dalam cache tepi, ia meresponsRange GET
permintaan baru dengan menyajikan rentang yang diminta.
Dalam kedua kasus tersebut, CloudFront mulailah melayani rentang atau objek yang diminta ke pengguna akhir segera setelah byte pertama tiba dari asal.
catatan
Jika penampil membuat Range GET
permintaan dan asal kembaliTransfer-Encoding: chunked
, CloudFront mengembalikan seluruh objek ke penampil, bukan rentang yang diminta.
CloudFront umumnya mengikuti RFC spesifikasi untuk Range
header. Namun, jika Range
header Anda tidak mematuhi persyaratan berikut, CloudFront mengembalikan kode HTTP status 200
dengan objek lengkap, bukan kode status 206
dengan rentang yang ditentukan:
-
Rentang harus terdaftar dalam urutan naik. Misalnya,
100-200,300-400
valid,300-400,100-200
tidak valid. -
Rentang tersebut tidak boleh tumpang tindih. Misalnya,
100-200,150-250
tidak valid. -
Semua spesifikasi rentang harus valid. Misalnya, Anda tidak dapat menentukan nilai negatif sebagai bagian dari rentang.
Untuk informasi selengkapnya tentang header Range
permintaan, lihat Permintaan Rentang
Gunakan permintaan rentang untuk menyimpan objek besar
Ketika caching diaktifkan, CloudFront tidak mengambil atau cache objek yang lebih besar dari 50 GB. Ketika asal menunjukkan bahwa objek lebih besar dari ukuran ini (di header Content-Length
respons), CloudFront menutup koneksi ke asal dan mengembalikan kesalahan ke penampil. (Dengan caching dinonaktifkan, CloudFront dapat mengambil objek yang lebih besar dari ukuran ini dari asal dan meneruskannya ke penampil. Namun, CloudFront tidak men-cache objek.)
Namun, dengan permintaan rentang, Anda dapat CloudFront menggunakan cache objek yang lebih besar dari ukuran file cache maksimum.
contoh Contoh
-
Pertimbangkan asal dengan objek 100 GB. Dengan caching diaktifkan, CloudFront tidak mengambil atau menyimpan objek sebesar ini. Namun, penampil dapat mengirim beberapa permintaan rentang untuk mengambil objek ini dalam beberapa bagian, dengan setiap bagian lebih kecil dari 50 GB.
-
Penampil dapat meminta objek dalam bagian 20 GB dengan mengirimkan permintaan dengan header
Range: bytes=0-21474836480
untuk mengambil bagian pertama, permintaan lain dengan headerRange: bytes=21474836481-42949672960
untuk mengambil bagian berikutnya, dan seterusnya. -
Ketika pemirsa telah menerima semua bagian, itu dapat menggabungkannya untuk membangun objek 100 GB asli.
-
Dalam hal ini, CloudFront cache masing-masing bagian 20 GB dari objek dan dapat menanggapi permintaan berikutnya untuk bagian yang sama dari cache.