Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Sajikan file terkompresi
Anda dapat menggunakan CloudFront untuk secara otomatis mengompres jenis objek tertentu (file) dan melayani objek terkompresi ketika pemirsa (browser web atau klien lain) mendukungnya. Pemirsa menunjukkan dukungan mereka untuk objek terkompresi dengan Accept-Encoding
HTTP header.
CloudFront dapat mengompres objek menggunakan format kompresi Gzip dan Brotli. Ketika penampil mendukung kedua format, dan keduanya hadir di server cache yang tercapai, maka CloudFront lebih suka Brotli. Jika hanya satu format kompresi yang ada di server cache, CloudFront kembalikan.
Jika ada permintaan penampil berikutnya untuk objek yang sama, CloudFront mengembalikan versi cache pertama. Misalnya, jika penampil meminta objek tertentu yang menggunakan kompresi Gzip dan objek di-cache, dan penampil menerima format Gzip, permintaan berikutnya ke objek yang sama akan selalu mengembalikan versi Gzip, bahkan jika pemirsa menerima Brotli dan Gzip.
catatan
Browser web Chrome dan Firefox mendukung kompresi Brotli hanya ketika permintaan dikirim menggunakan. HTTPS Browser ini tidak mendukung Brotli dengan HTTP permintaan.
Ketika objek yang diminta dikompresi, unduhan bisa lebih cepat karena objek lebih kecil—dalam beberapa kasus, kurang dari seperempat ukuran aslinya. Khusus untuk JavaScript dan CSS file, unduhan yang lebih cepat dapat menghasilkan rendering halaman web yang lebih cepat untuk pengguna Anda. Selain itu, karena biaya transfer CloudFront data didasarkan pada jumlah total data yang disajikan, melayani objek terkompresi bisa lebih murah daripada melayani mereka tanpa kompresi.
Beberapa custom origin juga dapat mengompres objek. Asal Anda mungkin dapat mengompres objek yang CloudFront tidak mengompres (lihatJenis file yang CloudFront pengompresan). Jika asal Anda mengembalikan objek terkompresi ke CloudFront, CloudFront mendeteksi bahwa objek dikompresi berdasarkan keberadaan Content-Encoding
header dan tidak memampatkan objek lagi.
Konfigurasikan CloudFront untuk mengompres objek
Untuk mengkonfigurasi CloudFront untuk mengompres objek, perbarui perilaku cache yang ingin Anda layani objek terkompresi dengan melakukan semua hal berikut:
-
Pastikan pengaturan objek Kompres secara otomatis adalah Ya. (Dalam AWS CloudFormation atau CloudFront API, atur
Compress
ketrue
.) -
Gunakan kebijakan cache untuk menentukan pengaturan caching, dan memastikan Gzip dan Brotli kedua pengaturan diaktifkan. (Dalam AWS CloudFormation atau di CloudFrontAPI, atur
EnableAcceptEncodingGzip
danEnableAcceptEncodingBrotli
ketrue
.) -
Pastikan TTL nilai dalam kebijakan cache disetel ke nilai yang lebih besar dari nol. Saat Anda menetapkan TTL nilai ke nol, caching konten terkompresi dinonaktifkan.
Untuk memperbarui perilaku cache, Anda dapat menggunakan salah satu alat berikut:
Bagaimana CloudFront kompresi bekerja
Saat Anda mengonfigurasi CloudFront untuk mengompres objek (lihat bagian sebelumnya), inilah cara kerjanya:
-
Penampil meminta sebuah objek. Penampil menyertakan
Accept-Encoding
HTTP header dalam permintaan, dan nilai header termasukgzip
,br
, atau keduanya. Ini menunjukkan bahwa penampil mendukung objek terkompresi. Ketika pemirsa mendukung Gzip dan Brotli, CloudFront lebih suka Brotli.catatan
Browser web Chrome dan Firefox mendukung kompresi Brotli hanya ketika permintaan dikirim menggunakan. HTTPS Browser ini tidak mendukung Brotli dengan HTTP permintaan.
-
Di lokasi tepi, CloudFront periksa cache untuk salinan terkompresi dari objek yang diminta.
-
Jika objek terkompresi sudah ada di cache, CloudFront kirimkan ke penampil dan lewati langkah-langkah yang tersisa.
Jika objek terkompresi tidak ada dalam cache, CloudFront teruskan permintaan ke asal.
catatan
Jika salinan objek yang tidak terkompresi sudah ada di cache, CloudFront mungkin mengirimkannya ke penampil tanpa meneruskan permintaan ke asal. Misalnya, ini bisa terjadi ketika CloudFront sebelumnya dilewati kompresi. Ketika ini terjadi, CloudFront cache objek yang tidak dikompresi dan terus melayani sampai objek kedaluwarsa, diusir, atau tidak valid.
-
Jika asal mengembalikan objek terkompresi, seperti yang ditunjukkan oleh adanya
Content-Encoding
header dalam HTTP respons, CloudFront mengirimkan objek terkompresi ke penampil, menambahkannya ke cache, dan melewatkan langkah yang tersisa. CloudFront tidak memampatkan objek lagi.Jika asal mengembalikan objek yang tidak terkompresi ke CloudFront (tidak ada
Content-Encoding
header dalam HTTP respons), CloudFront tentukan apakah objek tersebut dapat dimampatkan. Untuk informasi selengkapnya tentang cara CloudFront menentukan apakah suatu objek dapat dimampatkan, lihat bagian berikut. -
Jika objek dapat dimampatkan, CloudFront kompres, kirimkan ke penampil, dan tambahkan ke cache. (Dalam kasus yang jarang terjadi, CloudFront mungkin melewatkan kompresi dan mengirim objek yang tidak dikompresi ke penampil.)
Saat CloudFront mengompres benda
Daftar berikut memberikan informasi lebih lanjut tentang kapan CloudFront mengompres objek.
- Permintaan menggunakan HTTP 1.0
-
Jika permintaan untuk CloudFront menggunakan HTTP 1.0, CloudFront menghapus
Accept-Encoding
header dan tidak memampatkan objek dalam respons. Accept-Encoding
permintaan header-
Jika
Accept-Encoding
header hilang dari permintaan penampil, atau jika tidak berisigzip
ataubr
sebagai nilai, CloudFront tidak memampatkan objek dalam respons. JikaAccept-Encoding
header menyertakan nilai tambahan sepertideflate
, CloudFront hapus sebelum meneruskan permintaan ke asal.Ketika CloudFront dikonfigurasi untuk mengompres objek, itu termasuk
Accept-Encoding
header di kunci cache dan permintaan asal secara otomatis. - Konten dinamis
-
CloudFront tidak selalu mengompres konten dinamis. Terkadang respons untuk konten dinamis dikompresi, dan terkadang tidak.
- Konten sudah di-cache saat Anda mengonfigurasi CloudFront untuk mengompres objek
-
CloudFront memampatkan objek ketika mendapatkannya dari asal. Saat Anda mengonfigurasi CloudFront untuk mengompres objek, CloudFront tidak mengompres objek yang sudah di-cache di lokasi tepi. Selain itu, ketika objek yang di-cache kedaluwarsa di lokasi tepi dan CloudFront meneruskan permintaan lain untuk objek ke asal Anda, CloudFront tidak memampatkan objek saat asal Anda mengembalikan kode HTTP status 304, yang berarti bahwa lokasi tepi sudah memiliki versi terbaru dari objek. Jika Anda ingin CloudFront mengompres objek yang sudah di-cache di lokasi tepi, Anda perlu membatalkan objek tersebut. Untuk informasi selengkapnya, lihat Membatalkan file untuk menghapus konten.
- Origin sudah dikonfigurasi untuk mengompres objek
-
Jika Anda mengkonfigurasi CloudFront untuk mengompres objek dan asal juga memampatkan objek, asal harus menyertakan
Content-Encoding
header, yang menunjukkan CloudFront bahwa objek sudah dikompresi. Ketika respons dari asal menyertakanContent-Encoding
header, CloudFront tidak memampatkan objek, terlepas dari nilai header. CloudFrontmengirimkan respons ke penampil dan menyimpan objek di lokasi tepi. - Jenis file yang CloudFront mengompres
-
Untuk daftar lengkap jenis file yang CloudFront dikompres, lihatJenis file yang CloudFront pengompresan.
- Ukuran benda yang CloudFront memampatkan
-
CloudFront memampatkan objek yang berukuran antara 1.000 byte dan 10.000.000 byte.
- Header
Content-Length
-
Asal harus menyertakan
Content-Length
header dalam respons, yang CloudFront digunakan untuk menentukan apakah ukuran objek berada dalam kisaran yang CloudFront memampatkan. JikaContent-Length
header hilang, berisi nilai yang tidak valid, atau berisi nilai di luar rentang ukuran yang CloudFront dikompres, CloudFront tidak memampatkan objek. - HTTPkode status respon
-
CloudFront mengompres objek hanya ketika kode HTTP status respons adalah
200
,403
, atau404
. - Respon tidak memiliki tubuh
-
Ketika HTTP respons dari asal tidak memiliki tubuh, tidak ada yang bisa dikompres. CloudFront
- Header
ETag
-
CloudFront terkadang memodifikasi
ETag
header dalam HTTP respons saat memampatkan objek. Untuk informasi selengkapnya, lihat ETagkonversi header. - CloudFront melompati kompresi
-
CloudFront mengompres objek dengan upaya terbaik. Dalam kasus yang jarang terjadi, CloudFront melewatkan kompresi. CloudFront membuat keputusan ini berdasarkan berbagai faktor, termasuk kapasitas host. Jika CloudFront melewatkan kompresi untuk suatu objek, itu akan menyimpan objek yang tidak dikompresi dan terus menyajikannya kepada pemirsa sampai objek kedaluwarsa, diusir, atau tidak valid.
Jenis file yang CloudFront pengompresan
Jika Anda mengonfigurasi CloudFront untuk mengompres objek, CloudFront hanya kompres objek yang memiliki salah satu nilai berikut di header Content-Type
respons:
-
application/dash+xml
-
application/eot
-
application/font
-
application/font-sfnt
-
application/javascript
-
application/json
-
application/opentype
-
application/otf
-
application/pdf
-
application/pkcs7-mime
-
application/protobuf
-
application/rss+xml
-
application/truetype
-
application/ttf
-
application/vnd.apple.mpegurl
-
application/vnd.mapbox-vector-tile
-
application/vnd.ms-fontobject
-
application/wasm
-
application/xhtml+xml
-
application/xml
-
application/x-font-opentype
-
application/x-font-truetype
-
application/x-font-ttf
-
application/x-httpd-cgi
-
application/x-javascript
-
application/x-mpegurl
-
application/x-opentype
-
application/x-otf
-
application/x-perl
-
application/x-ttf
-
font/eot
-
font/opentype
-
font/otf
-
font/ttf
-
image/svg+xml
-
text/css
-
text/csv
-
text/html
-
text/javascript
-
text/js
-
text/plain
-
text/richtext
-
text/tab-separated-values
-
text/xml
-
text/x-component
-
text/x-java-source
-
text/x-script
-
vnd.apple.mpegurl
ETag
konversi header
Ketika objek yang tidak dikompresi dari asal menyertakan ETag
HTTP header yang valid dan kuat, dan CloudFront mengompres objek, CloudFront juga mengubah nilai ETag
header yang kuat menjadi lemahETag
, dan mengembalikan nilai lemah ke penampilETag
. Pemirsa dapat menyimpan ETag
nilai lemah dan menggunakannya untuk mengirim permintaan bersyarat dengan If-None-Match
HTTP header. Hal ini memungkinkan pemirsa CloudFront,, dan asal untuk memperlakukan versi objek yang dikompresi dan tidak terkompresi sebagai setara secara semantik, yang mengurangi transfer data yang tidak perlu.
Nilai header ETag
yang kuat dimulai dengan karakter kutipan ganda ("
). Untuk mengubah ETag
nilai kuat menjadi yang lemah, CloudFront tambahkan karakter W/
ke awal ETag
nilai yang kuat.
Ketika objek dari asal menyertakan nilai ETag
header yang lemah (nilai yang dimulai dengan karakterW/
), CloudFront tidak mengubah nilai ini, dan mengembalikannya ke penampil seperti yang diterima dari asal.
Ketika objek dari asal menyertakan nilai ETag
header yang tidak valid (nilai tidak dimulai dengan "
atau denganW/
), CloudFront menghapus ETag
header dan mengembalikan objek ke penampil tanpa header ETag
respon.
Untuk informasi selengkapnya, lihat halaman berikut di dokumen MDN web:
-
Arahan
( ETag
HTTPheader) -
Validasi lemah
(permintaan HTTP bersyarat)