什麼是 GZIP 壓縮?
GZIP 是由 RFC 1952 定義的無損檔案壓縮格式。它將由 DEFLATE 演算法(RFC 1951)產生的有效負載包裝起來,該演算法結合 LZ77 反向引用與 Huffman 編碼,將重複資料壓縮成緊湊的位元組流。
GZIP 壓縮是如何運作的?
您的輸入完全在瀏覽器中透過原生 CompressionStream('gzip') API 進行處理。主要步驟如下:
- 工具將您的文字或檔案轉換為位元組流(文字輸入使用 UTF-8)。
- 這些位元組會通過設定為
gzip格式的CompressionStream進行處理。 - 瀏覽器套用 DEFLATE:滑動視窗 LZ77 掃描尋找重複序列,Huffman 編碼為常見符號分配較短的編碼。
- 在 DEFLATE 負載外包裹 10 位元組的 gzip 標頭與 8 位元組的尾段(原始資料的 CRC32 加上原始長度對 2^32 取餘),產生標準的 .gz 容器。
- 文字輸入的結果會以 Base64 或十六進位形式呈現;二進位輸入則提供可下載的 .gz 檔案。
為什麼使用 GZIP 進行壓縮?
- 更小的負載:文字、JSON、HTML、CSS 與原始碼通常會壓縮為原始大小的一小部分。
- 業界標準:幾乎所有 HTTP 伺服器、CDN、瀏覽器、封存工具與程式語言標準函式庫都能識別 GZIP。
- 隱私:壓縮完全在您的瀏覽器中進行。輸入永遠不會到達我們的伺服器。
- 支援來回操作:輸出可使用
gunzip指令列、HTTPContent-Encoding: gzip,以及 Python、Node.js、Go、Java 或 Rust 中的任何 RFC 1952 讀取器進行解壓。
GZIP 壓縮有哪些常見應用?
GZIP 在整個網路和命令列工具中被廣泛使用:
- HTTP 傳輸:Web 伺服器使用 GZIP 壓縮回應,使頁面在網路上載入得更快。
- 日誌封存:長期保留的伺服器日誌以 .gz 檔案形式儲存以節省磁碟空間。
- 備份與打包:tarball(.tar.gz)將整個目錄樹壓縮以便攜帶式分發。
GZIP 壓縮範例是什麼樣子?
包含許多重複欄位名稱的 1 KB JSON 文件通常可壓縮到約 200–300 位元組——大小減少四到五倍。大型文字日誌的壓縮率通常達到 90% 或更高。已經壓縮過的輸入(JPEG、PNG、MP4、ZIP)無法再進一步壓縮,反而可能因 GZIP 包裝而增加幾個位元組。
此 GZIP 壓縮器直接在您的瀏覽器中產生標準 RFC 1952 輸出。無論是在傳輸前壓縮負載,還是產生用於封存的 .gz 檔案,結果都能與網路上所有相容 GZIP 的工具互通。