CDN・エッジ

Gzip じーじっぷ

圧縮HTTPContent-EncodingdeflateBrotliパフォーマンス最適化
Gzipについて教えて

簡単に言うとこんな感じ!

Gzipはファイルを「ギュッと圧縮」する技術だよ!Webサイトを表示するとき、サーバーがHTMLやCSSを小さく圧縮してから送り、ブラウザ側で元に戻すことで、通信量を減らしてページを速く表示できるんだ。引越しのときに布団を圧縮袋で小さくするイメージ!


Gzipとは

Gzip(GNU zip) は、データを可逆圧縮するためのファイルフォーマットおよびソフトウェアです。「可逆圧縮」とは、圧縮したデータを元どおりに復元できる圧縮方式のことで、画像の非可逆圧縮(JPEGなど)とは異なり、テキストデータを一切劣化させずに小さくできます。

WebにおけるGzipの主な用途は、HTTPレスポンスの圧縮転送です。Webサーバー(NginxやApacheなど)がHTMLやCSS、JavaScriptファイルをGzip圧縮してブラウザに送信し、ブラウザ側が自動的に解凍して表示します。この仕組みにより、テキスト系ファイルは一般的に 60〜80% のサイズ削減が可能で、ページの読み込み速度を大幅に改善できます。

ビジネス的な観点では、Gzipはほぼすべてのモダンブラウザとサーバーが対応しているため、特別なツール不要で今すぐ使える「コストゼロの高速化手段」として重宝されています。CDN(コンテンツデリバリーネットワーク)でも標準的に有効化されており、設定一つでサイト全体の転送量削減と表示速度向上を実現できます。


Gzipの仕組みと構造

Gzipは内部的に DEFLATEアルゴリズム を使って圧縮します。DEFLATEは「LZ77」と「ハフマン符号」という2つの手法を組み合わせたもので、繰り返し出現するパターンを短い記号に置き換えることで圧縮を実現しています。

要素内容
圧縮アルゴリズムDEFLATE(LZ77 + ハフマン符号)
ファイル拡張子.gz
MIMEタイプapplication/gzip
HTTPヘッダーContent-Encoding: gzip
圧縮レベル1(最速・低圧縮率)〜 9(最遅・高圧縮率)
得意なデータテキスト(HTML / CSS / JS / JSON / XML)
不得意なデータ画像・動画・ZIP(すでに圧縮済み)

HTTP通信での流れ

[ブラウザ] ─── リクエスト ────────────────────────────→ [サーバー]
              Accept-Encoding: gzip, deflate, br

[ブラウザ] ←── レスポンス(圧縮済みデータ) ──────────── [サーバー]
              Content-Encoding: gzip
              (ブラウザが自動解凍して表示)

ブラウザは Accept-Encoding: gzip ヘッダーで「Gzipに対応しています」と申告し、サーバーが圧縮して返します。ブラウザは受け取ったデータを自動で解凍するため、ユーザーは圧縮の存在を意識しません。

覚え方

Googling Zips Instantly Pages(ジー・ジップ)」
→ Gで始まるZipがページを即座に速くする、と覚えよう!


歴史と背景

  • 1992年 — Jean-loup GaillyとMark Adlerが、Unix系OSの compress コマンド(LZW特許問題あり)の代替としてGzipを開発・公開
  • 1993年 — GNU projectの一部として正式リリース。Linux/Unixの標準圧縮ツールとして普及
  • 1996年RFC 1952 でGzipファイルフォーマットが標準化。RFC 2616(HTTP/1.1)で Content-Encoding: gzip がHTTPの公式な圧縮転送方式として定義される
  • 2000年代 — Apache HTTP Serverの mod_deflate、IISの動的圧縮機能が普及し、Webサーバー側でのGzip圧縮が一般化
  • 2010年代 — CDNサービス(Cloudflare、AWS CloudFront等)がGzip圧縮をエッジで自動適用する機能を標準搭載
  • 2015年 — Googleが開発した Brotli が登場し、Gzipよりさらに高い圧縮率を実現。HTTPSサイト向けの次世代圧縮として注目される
  • 現在 — Gzipは枯れた技術として全ブラウザ・全サーバーで安定サポート。新規構築ではBrotliも併用するのがベストプラクティス

Gzip・Deflate・Brotliの比較

Web転送で使われる主な圧縮方式を比較します。

HTTP転送圧縮方式の比較 Gzip Content-Encoding: gzip 圧縮率: ★★★☆☆ 速度: ★★★★☆ ブラウザ対応: 100% 登場: 1992年 枯れた安定技術 すべての環境で使える Deflate Content-Encoding: deflate 圧縮率: ★★★☆☆ 速度: ★★★★☆ ブラウザ対応: 高い 登場: 1996年(RFC) 実装間で挙動差あり 現在はGzipが主流 Brotli Content-Encoding: br 圧縮率: ★★★★★ 速度: ★★★☆☆ ブラウザ対応: ~96% 登場: 2015年(Google) HTTPS必須 次世代標準として普及中 ※ 圧縮率・速度はテキストファイルの一般的な傾向。実測値は環境により異なる

実務での使い分け

シーン推奨設定
既存サーバーで手軽に高速化したいGzipのみ有効化
新規構築・CDN利用でさらに最適化Brotliを優先、非対応ブラウザにGzipをフォールバック
画像(JPEG/PNG/WebP)や動画ファイル圧縮不要(効果なし・むしろ遅くなる場合も)
すでに圧縮済みのZIP・PDF圧縮不要

Nginxでの設定例

# nginx.conf でのGzip有効化(参考)
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;   # 1KB未満は圧縮しない
gzip_comp_level 6;      # 圧縮レベル(1〜9、6がバランス良好)

関連する規格・RFC

規格・RFC番号内容
RFC 1952GZIPファイルフォーマット仕様
RFC 1951DEFLATEアルゴリズムの仕様
RFC 9110HTTP Semantics(Content-Encodingヘッダーの定義を含む)
RFC 7932Brotli圧縮アルゴリズムの仕様

関連用語

  • CDN — コンテンツをエッジサーバーから配信し、Gzip圧縮と組み合わせることでさらなる高速化を実現する仕組み
  • Brotli — GoogleがGzipの後継として開発した次世代圧縮アルゴリズム
  • HTTPヘッダーContent-EncodingAccept-Encoding などGzip圧縮の交渉に使われるHTTPの付加情報
  • HTTP/2 — Gzip圧縮と組み合わせて使われる高速化されたHTTPプロトコルのバージョン
  • TLS/SSL — BrotliはHTTPS(TLS)環境が前提となるため、Gzipと合わせて理解したい暗号化通信技術
  • レイテンシ — Gzip圧縮でデータ量を削減することで改善できる通信の遅延指標
  • WebパフォーマンスOptimization — Gzip圧縮が含まれるWebサイト高速化施策の総称
  • キャッシュ — CDNやブラウザがGzip圧縮済みのレスポンスを保存・再利用する仕組み