Bagaimana CloudFront memproses permintaan sebagian untuk suatu objek (rentangGETs) - Amazon CloudFront

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 mendukung Range 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 merespons Range 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 di RFC 7233, atau Rentang di Dokumen MDN Web.

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
  1. 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.

  2. Penampil dapat meminta objek dalam bagian 20 GB dengan mengirimkan permintaan dengan header Range: bytes=0-21474836480 untuk mengambil bagian pertama, permintaan lain dengan header Range: bytes=21474836481-42949672960 untuk mengambil bagian berikutnya, dan seterusnya.

  3. Ketika pemirsa telah menerima semua bagian, itu dapat menggabungkannya untuk membangun objek 100 GB asli.

  4. Dalam hal ini, CloudFront cache masing-masing bagian 20 GB dari objek dan dapat menanggapi permintaan berikutnya untuk bagian yang sama dari cache.