Content-Encoding HTTPヘッダー — gzip、br、deflate

Content-EncodingとAccept-Encoding HTTPヘッダーを理解します。ブラウザとサーバーがWebリソースの圧縮をネゴシエートする方法を学びます。

HTTP & Protocols

詳細な説明

Content-Encoding:HTTPでの圧縮の仕組み

HTTPプロトコルは、各レスポンスで使用する圧縮アルゴリズムを決定するためのネゴシエーションメカニズムを使用します。

ネゴシエーションフロー

  1. クライアントが送信Accept-Encoding: gzip, deflate, br
  2. サーバーが圧縮:サポートされるアルゴリズムを使用
  3. サーバーが応答Content-Encoding: gzip
  4. クライアントが解凍:自動的に実行

重要なヘッダー

Vary: Accept-Encodingヘッダーは重要です。CDNやプロキシに対して、エンコーディングごとに別バージョンをキャッシュするよう指示します。

よくある落とし穴

  • Varyヘッダーの欠落:CDNキャッシュポイズニングの原因
  • 二重圧縮:既に圧縮されたコンテンツの圧縮はCPUの無駄
  • HTTPS上の圧縮:BREACH攻撃に注意が必要

ユースケース

Webサーバー設定、CDNセットアップ、圧縮問題のデバッグ。nginx、Apache、Cloudflareなどのリバースプロキシを正しく設定するために必須の知識です。

試してみる — Gzip Size Calculator

フルツールを開く