Gzip圧縮の基本 — 仕組み

Gzip圧縮の仕組み、DEFLATEアルゴリズムの動作、gzipがWebで最も広く使われる圧縮方式である理由を解説します。

Fundamentals

詳細な説明

Gzip圧縮の仕組み

Gzipは、Web上で最も広くデプロイされている圧縮形式です。すべての主要ブラウザとWebサーバーがContent-Encoding: gzip HTTPヘッダーを通じてサポートしています。

DEFLATEアルゴリズム

Gzipの中核ではDEFLATEアルゴリズムが使用されており、2つの技術を組み合わせています:

  1. LZ77(Lempel-Ziv 77):入力中の繰り返しバイト列を見つけ、後方参照で置換します。例えば、"background-color"という文字列がCSSファイル中に50回出現する場合、DEFLATEは一度保存し、他の箇所では参照します。

  2. ハフマン符号化:より頻繁に出現するバイトに短いビットパターンを割り当てます。et、スペースなどの一般的な文字は短いコードを取得し、まれな文字は長いコードになります。

GzipとRaw DEFLATEの違い

Gzip形式はDEFLATE出力を以下でラップします:

コンポーネント サイズ 目的
マジックナンバー 2バイト \x1f\x8b識別子
ヘッダー 8+バイト 圧縮方式、タイムスタンプ、OS
圧縮データ 可変 DEFLATE出力
CRC-32チェックサム 4バイト 整合性検証
元のサイズ 4バイト 非圧縮長(mod 2³²)

数百バイト以上のファイルでは、約18–20バイトのオーバーヘッドは無視できます。

圧縮レベル

Gzipはレベル1–9をサポートします:

  • レベル1:最速の圧縮、最低の圧縮率(テキストで約60%削減)
  • レベル6:速度と圧縮率のデフォルトバランス(約70%削減)
  • レベル9:最も遅い圧縮、最高の圧縮率(約72%削減)

レベル6と9の差は通常わずか1–3%の追加圧縮ですが、2–4倍長くかかる場合があります。

ユースケース

すべてのWeb開発者にとって必須の知識です。gzipの基本を理解することで、アセット配信、サーバー設定、パフォーマンス最適化について情報に基づいた判断ができます。

試してみる — Gzip Size Calculator

フルツールを開く