Apakah pemampatan GZIP?
GZIP ialah format fail pemampatan tanpa kehilangan yang ditakrifkan oleh RFC 1952. Ia membalut muatan yang dihasilkan oleh algoritma DEFLATE (RFC 1951), yang menggabungkan rujukan balik LZ77 dengan pengekodan Huffman untuk mengecilkan data berulang kepada strim bait yang padat.
Bagaimana pemampatan GZIP berfungsi?
Input anda diproses sepenuhnya di pelayar anda menggunakan API CompressionStream('gzip') asli. Langkah-langkah utamanya ialah:
- Alat menukar teks atau fail anda kepada strim bait (UTF-8 untuk input teks).
- Bait-bait tersebut dihantar melalui
CompressionStreamyang dikonfigurasi untuk formatgzip. - Pelayar menggunakan DEFLATE: laluan LZ77 tetingkap gelongsor mencari jujukan berulang, dan pengekodan Huffman memberikan kod yang lebih pendek kepada simbol yang biasa.
- Pengepala gzip 10 bait dan pengaki 8 bait (CRC32 data asal ditambah panjang asal modulo 2^32) dibalut di sekeliling muatan DEFLATE, menghasilkan bekas .gz piawai.
- Hasilnya dirender sebagai Base64 atau hex untuk input teks, atau ditawarkan sebagai fail .gz yang boleh dimuat turun untuk input binari.
Mengapa memampatkan dengan GZIP?
- Muatan yang lebih kecil: teks, JSON, HTML, CSS, dan kod sumber biasanya mengecil kepada sebahagian kecil daripada saiz asal.
- Piawaian industri: GZIP difahami oleh hampir setiap pelayan HTTP, CDN, pelayar, alat arkib, dan perpustakaan piawai bahasa pengaturcaraan.
- Privasi: pemampatan berlaku sepenuhnya di pelayar anda. Input tidak pernah sampai ke pelayan kami.
- Sedia untuk perjalanan pergi-balik: output dinyahmanpatkan dengan CLI
gunzip, dengan HTTPContent-Encoding: gzip, dan dengan mana-mana pembaca RFC 1952 dalam Python, Node.js, Go, Java, atau Rust.
Apakah aplikasi biasa pemampatan GZIP?
GZIP digunakan merentas web dan dalam alat baris arahan:
- Pemindahan HTTP: pelayan web memampatkan respons dengan GZIP supaya halaman dimuatkan lebih pantas melalui rangkaian.
- Pengarkiban log: log pelayan jangka panjang disimpan sebagai fail .gz untuk mengurangkan penggunaan cakera.
- Sandaran dan bundel: tarball (.tar.gz) memampatkan keseluruhan pepohon direktori untuk pengedaran mudah alih.
Bagaimana contoh pemampatan GZIP kelihatan?
Dokumen JSON 1 KB dengan banyak nama medan berulang biasanya dimampatkan kepada sekitar 200–300 bait — pengurangan saiz empat hingga lima kali ganda. Log teks yang besar sering dimampatkan sebanyak 90% atau lebih. Input yang sudah dimampatkan (JPEG, PNG, MP4, ZIP) tidak akan mengecil lagi dan mungkin bertambah beberapa bait dari bingkai GZIP.
Pemampat GZIP ini menghasilkan output RFC 1952 piawai terus di pelayar anda. Sama ada anda mengecilkan muatan sebelum penghantaran atau menghasilkan fail .gz untuk pengarkiban, hasilnya saling beroperasi dengan setiap alat yang memahami GZIP di rangkaian.