Kompresi dinamis otomatis mengompresi respons yang ditayangkan oleh Media CDN. Ukuran data yang dikirim melalui jaringan dikurangi sebesar 60% hingga 85% dalam kasus biasa.
Pengurangan ukuran mempercepat download aset penting, seperti stylesheet (CSS), skrip (JavaScript), dan manifes video (HLS/DASH), yang dapat secara signifikan mengurangi waktu pemuatan halaman dan waktu mulai video.
Playlist video live (manifes) berukuran besar memiliki data dan pengambilan berulang dalam jumlah yang signifikan, termasuk host dan awalan jalur setiap segmen, serta metadata playlist HLS atau DASH. Makin cepat playlist dimuat atau update playlist dapat didownload, makin sedikit waktu yang diperlukan klien untuk menguraikan dan mulai mendownload segmen video yang dirujuk. Playlist HLS dan DASH sering kali mengalami pengurangan ukuran total lebih dari 90%.
Untuk informasi selengkapnya tentang manfaat mengompresi respons, lihat panduan Dasar-Dasar Web.
Cara kerja kompresi dinamis
Jika kompresi dinamis diaktifkan, konten yang dapat dikompresi
yang ditayangkan dari origin dapat dikompresi sebelum dikirim 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 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
yang bukan nol), Media CDN akan melakukan hal berikut:
Menghapus header
Content-Length
dari respons; hal ini diperlukan agar respons dapat ditayangkan secepat mungkin karena durasi konten lengkap tidak diketahui hingga seluruh respons telah dikompresi. Untuk HTTP/1.1 dan yang lebih lama, Media CDN menggunakanTransfer-Encoding: chunked
dalam respons jika tidak menggunakanContent-Length
.Setelah respons dikompresi dan di-cache, Media CDN dapat menyertakan header
Content-Length
dalam respons berikutnya dan menetapkan nilai ke panjang konten isi yang dikompresi.Menetapkan
Accept-Ranges
kenone
. Hal ini memberi tahu klien bahwa permintaan rentang untuk resource ini diabaikan.Melemahkan header respons
ETag
yang kuat, seperti yang diwajibkan oleh RFC 9110 bagian 8.8.3. Misalnya,ETag: "xyzzy"
diganti denganETag: W/"xyzzy"
.Menetapkan header
Content-Encoding
kebr
ataugzip
, yang menunjukkan algoritma kompresi yang dipilih.Media CDN memilih algoritma kompresi terbaik berdasarkan rasio kompresi respons yang diperkirakan dan kecepatan kompresi atau throughput.
Kompresi Brotli digunakan jika klien mendukungnya, meskipun algoritma kompresi lainnya memiliki nilai
q
yang 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 menguntungkan performa, terutama pada perangkat seluler dengan daya yang lebih rendah.
Mengonfigurasi dekompresi dinamis
Anda dapat mengaktifkan kompresi dinamis di rute yang menyalurkan permintaan.
Sebelum memulai
Lakukan tindakan berikut:
Identifikasi atau buat origin Media CDN dengan konten yang dapat dikompresi yang siap ditayangkan.
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.
Menyetel mode ke otomatis akan mengaktifkan kompresi dinamis untuk setiap respons yang memenuhi syarat. Selain itu, perintah ini akan menginstruksikan Media CDN untuk memilih algoritma kompresi terbaik secara otomatis.
Untuk mengaktifkan kompresi dinamis, lakukan tindakan berikut:
Konsol
Di konsol Google Cloud , buka halaman Media CDN.
Untuk membuka halaman Details layanan yang ingin Anda konfigurasikan aturan rutenya, klik nama layanan.
Untuk beralih ke mode edit, klik tombol Edit.
Untuk membuka bagian Pemilihan rute, klik Berikutnya.
Untuk mengedit aturan host, klik panah untuk meluaskan aturan tersebut.
Untuk mengedit aturan rute, klik
Edit pada baris masing-masing.Di panel Edit route rule, klik Advanced configurations.
Opsional: Untuk Tindakan rute, tambahkan item Kebijakan CDN.
Kebijakan CDN memungkinkan Media CDN mengompresi konten sekali dan menayangkannya beberapa kali, sehingga menghemat bandwidth dan mempercepat pengiriman.
Di bagian Dynamic compression, pilih Enable compression.
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.yaml
Ganti kode berikut:
SERVICE_NAME
: Nama layanan Anda.FILENAME
: nama file YAML
Dalam definisi rute di file YAML, pada bagian
routeAction
, tetapkancompressionMode
keAUTOMATIC
, 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: AUTOMATIC
Untuk mengupdate 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
Konfigurasi Anda akan segera diterapkan ke semua lokasi edge.
Saat kompresi dinamis diaktifkan untuk rute dan konfigurasi baru mulai berlaku di mesin produksi, Media CDN akan mulai mengompresi respons yang memenuhi syarat, meskipun versi yang di-cache dan tidak dikompresi ada. Saat Media CDN mengambil dan mengompresi konten baru, mungkin ada lonjakan traffic sementara ke origin Anda.
Menonaktifkan kompresi dinamis untuk aturan rute
Untuk menonaktifkan kompresi dinamis, lakukan hal berikut:
Konsol
Di konsol Google Cloud , buka halaman Media CDN.
Untuk membuka halaman Details layanan yang ingin Anda konfigurasikan aturan rutenya, klik nama layanan.
Untuk beralih ke mode edit, klik tombol Edit.
Untuk membuka bagian Pemilihan rute, klik Berikutnya.
Untuk mengedit aturan host, klik panah untuk meluaskan aturan tersebut.
Untuk mengedit aturan rute, klik
Edit pada baris masing-masing.Di panel Edit route rule, klik Advanced configurations.
Di bagian Dynamic compression, batalkan pilihan Enable compression.
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.yaml
Ganti kode berikut:
SERVICE_NAME
: Nama layanan Anda.FILENAME
: nama file YAML
Dalam definisi rute di file YAML, tetapkan
compressionMode
keDISABLED
.Untuk mengupdate 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), untuk mencegah Media CDN menayangkan konten yang dikompresi di rute tersebut, nonaktifkan kompresi dinamis.
Menonaktifkan kompresi dinamis untuk rute akan menyebabkan Media CDN berhenti menayangkan konten yang dikompresi dari cache. Semua respons terkompresi yang sebelumnya di-cache menjadi tidak valid, dan CDN mengambil versi yang tidak dikompresi dari origin 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 hal berikut:
- Konten HTML:
text/html
- Stylesheet:
text/css
- JavaScript:
application/javascript
- JSON:
application/json
- Playlist HLS:
application/x-mpegURL
atauapplication/vnd.apple.mpegURL
- Manifes DASH:
application/dash+xml
Tabel berikut merangkum pengaruh jenis MIME terhadap kemampuan kompresi.
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
mengompresi file tersebut. Mengompresi ulang respons yang sudah dikompresi jarang mengurangi
ukuran file, dan klien mungkin menunjukkan perilaku yang tidak terduga saat menerima
respons semacam ini.
Respons yang tidak dapat dikompresi
CDN Media tidak mengompresi respons yang memiliki satu atau beberapa karakteristik berikut:
- Respons tidak memiliki header
Content-Type
yang cocok dengan jenis konten yang dapat dikompresi. - Respons tidak memiliki header
Content-Length
. - Respons memiliki header
Content-Encoding
. Hal ini menyiratkan bahwa origin telah mengompresi respons. Jadi, Media CDN tidak boleh melakukan kompresi dinamis tambahan. Respons lebih kecil dari 1 KiB.
Waktu yang dihabiskan untuk mengompresi dan mendekompresi sering kali mengimbangi manfaat apa pun. Selain itu, ada lebih sedikit konten yang akan dikompresi, yang dapat mengurangi efektivitas kompresi dan menyebabkan rasio kompresi yang lebih rendah.
Respons lebih besar dari 1 MiB.
CDN Media mengompresi respons hingga ukuran yang diizinkan untuk menyimpan objek dalam cache tanpa penyimpanan dalam rentang byte.
Respons memiliki header
Cache-Control: no-transform
.Respons memiliki header
Vary: Accept-Encoding
, yang menyiratkan bahwa kompresi dinamis tidak diperlukan karena origin dapat mengompresi respons.
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 akan melihat 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.
{ insertId: "1c02hw9g3gjay67" jsonPayload: { @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", cacheId: "IAD-862d661f", cacheStatus": "hit,stale", compressionAlgorithmApplied: "br" }, }
Penagihan
Saat respons dikompresi oleh Media CDN, biaya transfer data internet atau cache keluar yang relevan didasarkan pada byte terkompresi akhir yang dikirim ke klien.
Jika Anda menayangkan respons yang dapat dikompresi dalam jumlah besar, hal ini dapat mengakibatkan pengurangan biaya transfer data keluar bulanan, serta peningkatan performa untuk pengguna akhir.