Kompresi dinamis otomatis mengompresi respons yang disajikan oleh Media CDN. Ukuran data yang dikirim melalui jaringan berkurang sebesar 60% hingga 85% dalam kasus umum.
Pengurangan ukuran mempercepat download aset penting, seperti stylesheet (CSS), skrip (JavaScript), dan manifes video (HLS/DASH), yang dapat mengurangi waktu pemuatan halaman dan waktu mulai video secara signifikan.
Playlist video live (manifes) berukuran besar memiliki sejumlah besar data dan pengambilan berulang, termasuk awalan host dan jalur tiap segmen, serta metadata playlist HLS atau DASH. Makin cepat muatan atau update playlist dapat didownload, makin sedikit waktu yang dibutuhkan klien untuk mengurai dan mulai mendownload segmen video yang dirujuk. Playlist HLS dan DASH sering kali mengalami pengurangan ukuran total lebih dari 90%.
Untuk mengetahui informasi selengkapnya tentang manfaat mengompresi respons, lihat panduan Dasar-Dasar Web.
Cara kerja kompresi dinamis
Jika kompresi dinamis diaktifkan, konten yang dapat dikompresi
yang disajikan dari asal dapat dikompresi sebelum dikirimkan jika
klien menerima salah satu algoritma kompresi yang didukung (br atau gzip).
Media CDN menambahkan header Vary: Accept-Encoding ke semua respons yang memenuhi syarat untuk kompresi. Untuk mengetahui informasi terkait, lihat
Konten yang tidak dapat dikompresi.
Selain itu, jika header Accept-Encoding permintaan menunjukkan preferensi untuk konten yang dikompresi dengan menentukan br atau gzip (dan secara opsional menyertakan parameter q bukan nol), Media CDN akan melakukan hal berikut:
Menghapus header
Content-Lengthdari respons; hal ini diperlukan agar respons dapat disajikan secepat mungkin karena panjang konten lengkap tidak diketahui hingga seluruh respons dikompresi. Untuk HTTP/1.1 dan yang lebih lama, Media CDN akan menggunakanTransfer-Encoding: chunkeddalam respons jika tidak menggunakanContent-Length.Setelah respons dikompresi dan di-cache, Media CDN dapat menyertakan header
Content-Lengthdalam respons berikutnya dan menetapkan nilai ke panjang konten isi yang dikompresi.Menetapkan
Accept-Rangeskenone. Tindakan ini memberi tahu klien bahwa permintaan rentang untuk resource ini diabaikan.Melemahkan header respons
ETagyang kuat, sebagaimana diwajibkan oleh RFC 9110 bagian 8.8.3. Misalnya,ETag: "xyzzy"diganti denganETag: W/"xyzzy".Menetapkan header
Content-Encodingkebrataugzip, yang menandakan algoritma kompresi yang dipilih.Media CDN memilih algoritma kompresi terbaik berdasarkan perkiraan rasio kompresi respons dan kecepatan atau throughput kompresi.
Kompresi Brotli digunakan jika klien mendukungnya, meskipun algoritma kompresi lain memiliki nilai
qyang lebih tinggi di headerAccept-Encoding.Manifes HLS dikompresi hanya menggunakan
gzip.
Media CDN menentukan tingkat kompresi untuk menyeimbangkan total ukuran download dan biaya CPU di klien. Tingkat kompresi yang lebih tinggi tidak selalu meningkatkan performa, terutama pada perangkat seluler dengan daya yang lebih rendah.
Mengonfigurasi kompresi dinamis
Anda dapat mengaktifkan kompresi dinamis pada rute yang melayani permintaan.
Sebelum memulai
Lakukan tindakan berikut:
Identifikasi atau buat asal Media CDN dengan konten yang dapat dikompresi yang siap disajikan.
Identifikasi atau buat layanan Media CDN dengan minimal satu aturan rute.
Mengaktifkan kompresi dinamis untuk aturan rute
Secara default, mode kompresi untuk aturan rute dinonaktifkan.
Menetapkan mode ke otomatis akan mengaktifkan kompresi dinamis untuk setiap respons yang memenuhi syarat. Selain itu, tindakan ini akan menginstruksikan Media CDN untuk otomatis memilih algoritma kompresi terbaik.
Untuk mengaktifkan kompresi dinamis, lakukan hal berikut:
Konsol
Di Google Cloud Konsol, buka halaman Media CDN.
Untuk membuka halaman Detail layanan yang ingin Anda konfigurasi aturan rutenya, klik nama layanan.
Untuk beralih ke mode edit, klik tombol Edit.
Untuk membuka bagian Perutean, klik Berikutnya.
Untuk mengedit aturan host, klik panah untuk meluaskannya.
Untuk mengedit aturan rute, klik Edit di baris yang sesuai.
Di panel Edit aturan rute, klik Konfigurasi lanjutan.
Opsional: Untuk Tindakan rute, tambahkan item kebijakan CDN.
Kebijakan CDN memungkinkan Media CDN mengompresi konten satu kali dan menyajikannya beberapa kali, sehingga menghemat bandwidth dan mempercepat pengiriman.
Di bagian Kompresi dinamis, pilih Aktifkan kompresi.
Untuk menyimpan aturan rute, klik Simpan.
Untuk menyimpan perubahan pada layanan, klik Perbarui layanan.
gcloud dan YAML
Ekspor konfigurasi Media CDN Anda ke dalam file YAML. Gunakan perintah
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlGanti kode berikut:
SERVICE_NAME: Nama layanan Anda.FILENAME: Nama file YAML Anda.
Dalam definisi rute di file YAML, di bagian
routeAction, tetapkancompressionModekeAUTOMATIC, seperti yang ditunjukkan dalam contoh berikut:routing: hostRules: - hosts: - media.example.com pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 2 origin: origin1 matchRules: - pathTemplateMatch: "/**.m3u8" # HLS playlists - pathTemplateMatch: "/**.mpd" # DASH manifests routeAction: cdnPolicy: defaultTtl: 5s compressionMode: AUTOMATICUntuk memperbarui layanan, impor konfigurasi Media CDN Anda dari file YAML. Gunakan perintah
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
Cuplikan Terraform berikut menunjukkan aturan rute dengan kompresi dinamis yang diaktifkan.
Konfigurasi Anda akan segera diterapkan ke semua lokasi edge.
Jika kompresi dinamis diaktifkan untuk rute dan konfigurasi baru diterapkan di mesin produksi, Media CDN akan mulai mengompresi respons yang memenuhi syarat, meskipun ada versi cache yang tidak dikompresi. Saat Media CDN mengambil dan mengompresi konten baru, mungkin ada lonjakan sementara dalam traffic ke asal Anda.
Menonaktifkan kompresi dinamis untuk aturan rute
Untuk menonaktifkan kompresi dinamis, lakukan hal berikut:
Konsol
Di Google Cloud Konsol, buka halaman Media CDN.
Untuk membuka halaman Detail layanan yang ingin Anda konfigurasi aturan rutenya, klik nama layanan.
Untuk beralih ke mode edit, klik tombol Edit.
Untuk membuka bagian Perutean, klik Berikutnya.
Untuk mengedit aturan host, klik panah untuk meluaskannya.
Untuk mengedit aturan rute, klik Edit di baris yang sesuai.
Di panel Edit aturan rute, klik Konfigurasi lanjutan.
Di bagian Kompresi dinamis, hapus centang Aktifkan kompresi.
Untuk menyimpan aturan rute, klik Simpan.
Untuk menyimpan perubahan pada layanan, klik Perbarui layanan.
gcloud dan YAML
Ekspor konfigurasi Media CDN Anda ke dalam file YAML. Gunakan perintah
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlGanti kode berikut:
SERVICE_NAME: Nama layanan Anda.FILENAME: Nama file YAML Anda.
Dalam definisi rute di file YAML, tetapkan
compressionModekeDISABLED.Untuk memperbarui layanan, impor konfigurasi Media CDN Anda dari file YAML. Gunakan perintah
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Jika Anda mengalami masalah dengan kompresi dinamis untuk rute tertentu, seperti masalah kompatibilitas dengan klien tertentu (misalnya, smart TV atau perangkat streaming), nonaktifkan kompresi dinamis untuk mencegah Media CDN menyajikan konten yang dikompresi di rute tersebut.
Menonaktifkan kompresi dinamis untuk rute akan menyebabkan Media CDN berhenti menyajikan konten yang dikompresi dari cache. Semua respons terkompresi yang di-cache sebelumnya menjadi tidak valid, dan CDN mengambil versi yang tidak dikompresi dari asal Anda.
Jenis konten yang dapat dikompresi
Kompresi dinamis berlaku untuk jenis MIME berikut, berdasarkan header respons HTTP Content-Type. Respons yang tidak memiliki header Content-Type tidak dikompresi.
Jenis konten umum dan jenis MIME-nya mencakup:
- Konten HTML:
text/html - Stylesheet:
text/css - JavaScript:
application/javascript - JSON:
application/json - Playlist HLS:
application/x-mpegURLatauapplication/vnd.apple.mpegURL - Manifes DASH:
application/dash+xml
Tabel berikut merangkum pengaruh jenis MIME terhadap kompresibilitas.
| Jenis MIME yang dapat dikompresi | |
|---|---|
| Pencocokan persis |
application/csv application/javascript application/json application/json+protobuf application/signed-exchange application/wasm application/x-javascript application/x-nacl application/x-plist application/x-pnacl application/x-protobuf application/x-protobuffer application/x-sdch-dictionary application/xml audio/mpegURL font/eot font/otf font/ttf image/pwg-raster image/svg+xml image/vnd.microsoft.icon image/x-icon video/vnd.mpeg.dash.mpd |
| Pencocokan pola | application/*+json application/*+xml application/*mpegURL text/* |
Format gambar dan video (seperti image/jpeg, image/png, dan video/mpeg4) hampir selalu sudah dikompresi. Jadi, Media CDN tidak akan mengompresinya. Mengompresi ulang respons yang sudah dikompresi biasanya tidak akan mengurangi ukuran file, dan klien mungkin akan menunjukkan perilaku yang tidak terduga saat menerima respons semacam ini.
Respons yang tidak dapat dikompresi
Media CDN tidak akan mengompresi respons yang memiliki satu atau beberapa karakteristik berikut:
- Respons tidak memiliki header
Content-Typeyang cocok dengan jenis konten yang dapat dikompresi . - Respons tidak memiliki header
Content-Length. - Respons memiliki header
Content-Encoding. Hal ini menunjukkan bahwa asal telah mengompresi respons. Jadi, Media CDN tidak boleh melakukan kompresi dinamis tambahan. Ukuran respons kurang dari 1 KiB.
Waktu yang dihabiskan untuk mengompresi dan mendekompresi sering kali tidak sebanding dengan manfaat apa pun yang diperoleh. Selain itu, konten yang dikompresi juga lebih sedikit, sehingga dapat mengurangi efektivitas kompresi dan menghasilkan rasio kompresi yang lebih rendah.
Ukuran respons lebih besar dari 1 MiB.
Media CDN mengompresi respons hingga ukuran yang diizinkan untuk objek caching tanpa caching rentang byte.
Respons memiliki header
Cache-Control: no-transform.
Logging dan pemantauan
Jika kompresi diaktifkan, metrik https/response_bytes_count yang ada di bagian edgecache.googleapis.com/EdgeCacheRouteRule akan melaporkan ukuran respons yang dikompresi. Anda dapat mengalami penurunan total byte respons dan throughput transfer data keluar untuk konten yang dapat dikompresi.
Log Media CDN menyertakan kolom compressionAlgorithmApplied di jsonPayload, yang menunjukkan apakah respons dikompresi oleh load balancer serta jenis kompresinya atau tidak.
{
insertId: "1c02hw9g3gjay67"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
cacheId: "IAD-862d661f",
cacheStatus": "hit,stale",
compressionAlgorithmApplied: "br"
},
}
Penagihan
Jika respons dikompresi oleh Media CDN, biaya transfer data cache atau internet keluar yang relevan akan didasarkan pada byte terkompresi akhir yang dikirim ke klien.
Jika Anda menyajikan respons yang dapat dikompresi dalam jumlah besar, hal ini dapat mengurangi biaya transfer data keluar bulanan Anda, serta meningkatkan performa bagi pengguna akhir.