Content-Encoding
HTTPはWebサーバとWebクライアント(Webブラウザなど)の間でデータの伝送を行なう通信規約(プロトコル)の一つで、通信の制御情報を前半部のHTTPヘッダに記述し、後半のHTTPボディが伝送内容の本体を表す。ヘッダは改行区切りのテキスト(文字)形式で「項目名: 値(改行)」という記法で設定を列挙する。
Content-Encodingはヘッダで最も一般的に用いられる項目の一つで、ボディ部に積載したデータがWebサーバによって動的にデータ圧縮されている場合に、どの圧縮アルゴリズムが用いられたかを相手方に知らせる。クライアントからサーバに要求を伝えるHTTPリクエスト、サーバからクライアントに応答を伝えるHTTPレスポンスの両方で使用できる。
「gzip」が指定された場合はLZ77アルゴリズム(UNIX系のgzipコマンドの圧縮形式)が用いられ、同様に「compress」ならLZWアルゴリズム(UNIX系のcompressコマンドの圧縮形式)、「deflate」ならDeflateアルゴリズム(zlibライブラリの圧縮形式)、「br」ならBrotliアルゴリズムがそれぞれ使われている。無圧縮であることを明示したい場合は「identity」を指定する。
伝送する内容が文字(テキスト形式)である場合には、これらの圧縮形式により数分の一といった少ないデータ量で伝送することができるが、既に圧縮されている画像ファイルなどの場合はあまり圧縮されないか、かえってデータ量が増える場合もある。クライアントからサーバにどの形式で圧縮して欲しいか伝達することもでき、HTTPリクエスト中で「Accept-Encoding」ヘッダを指定する。
(2023.1.20更新)