Ano ang GZIP compression?
Ang GZIP ay isang lossless compression file format na tinukoy ng RFC 1952. Nira-wrap nito ang payload na ginawa ng DEFLATE algorithm (RFC 1951), na pinagsasama ang LZ77 back-reference at Huffman coding para palaiitin ang paulit-ulit na data sa isang compact na byte stream.
Paano gumagana ang GZIP compression?
Ang iyong input ay pinoproseso nang buo sa iyong browser gamit ang native CompressionStream('gzip') API. Ang mga mataas na antas na hakbang ay:
- Kino-convert ng tool ang iyong teksto o file sa isang stream ng bytes (UTF-8 para sa text input).
- Ang mga byte na iyon ay pinapain sa isang
CompressionStreamna na-configure para sagzipformat. - Inilalapat ng browser ang DEFLATE: ang sliding-window LZ77 pass ay naghahanap ng paulit-ulit na sequence, at ang Huffman coding ay nagtalaga ng mas maikling code sa mga karaniwang simbolo.
- Ang isang 10-byte gzip header at isang 8-byte footer (CRC32 ng orihinal na data kasama ang orihinal na haba modulo 2^32) ay nira-wrap sa paligid ng DEFLATE payload, gumagawa ng standard na .gz container.
- Ang resulta ay ini-render bilang Base64 o hex para sa text input, o inaalok bilang downloadable .gz file para sa binary input.
Bakit mag-compress gamit ang GZIP?
- Mas maliit na payload: ang teksto, JSON, HTML, CSS, at source code ay karaniwang lumiliit sa isang bahagi ng kanilang orihinal na laki.
- Pamantayan ng industriya: Ang GZIP ay naiintindihan ng halos bawat HTTP server, CDN, browser, archive tool, at standard library ng programming language.
- Privacy: ang compression ay nangyayari nang buo sa iyong browser. Ang input ay hindi kailanman umabot sa aming mga server.
- Handa para sa round-trip: ang output ay nadi-decompress gamit ang
gunzipCLI, gamit ang HTTPContent-Encoding: gzip, at gamit ang anumang RFC 1952 reader sa Python, Node.js, Go, Java, o Rust.
Ano ang mga karaniwang paggamit ng GZIP compression?
Ginagamit ang GZIP sa buong web at sa command-line tooling:
- HTTP transfer: ang mga web server ay nagko-compress ng mga response gamit ang GZIP para mas mabilis mag-load ang mga pahina sa network.
- Pag-archive ng log: ang mga matagal na server log ay ini-store bilang mga .gz file para bawasan ang paggamit ng disk.
- Mga backup at bundle: ang mga tarball (.tar.gz) ay nagko-compress ng buong directory tree para sa portable na pamamahagi.
Ano ang hitsura ng isang halimbawa ng GZIP compression?
Ang isang 1 KB JSON dokumento na may maraming paulit-ulit na field name ay karaniwang nako-compress sa humigit-kumulang 200–300 bytes — isang apat hanggang limang beses na pagbabawas ng laki. Ang malalaking text log ay madalas na nako-compress ng 90% o higit pa. Ang mga input na compressed na (JPEG, PNG, MP4, ZIP) ay hindi na liliit pa at maaaring lumaki ng ilang byte ng GZIP framing.
Ang GZIP compressor na ito ay gumagawa ng standard na RFC 1952 output nang direkta sa iyong browser. Kung pinapaliit mo ang isang payload bago ipadala o gumagawa ng .gz file para sa archival, ang resulta ay interoperable sa bawat GZIP-aware na tool sa network.