Apache モジュール mod_deflate
Insert filter
Netscape 4.x has some problems
Netscape 4.06-4.08 have some more problems
MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Don't compress images
Make sure proxies don't deliver the wrong content
出力フィルタを提供します。これはサーバからの出力を、ネットワークを 通してクライアントに送る前に圧縮することを可能にします。
AddOutputFilterByType DEFLATE text/html text/plain text/xml
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
よく使われているブラウザでは、すべてのコンテンツに対する 圧縮を扱えるわけではありません。ですから、gzip-only-text/html
にして、html ファイルに対してのみ 圧縮が働くようにした方がよいかもしれません (以下参照) この値を 1 以外の値に設定した場合は無視されます。
ディレクティブを使用します。次に Apache のドキュメントの html ファイルのみの圧縮を有効にする例を示します。AddOutputFilterByType
ディレクティブを使用して、特定のブラウザに BrowserMatchno-gzip
ノートをセットし、圧縮が行なわれないようにします。 no-gzip
を組み合わせることで上手く対処できます。 この場合、前者が後者をオーバーライドします。 上記の設定例の抜粋を 次に示しますのでご覧下さい。
文字列から Netscape Navigator 4.x であるかどうかを調べます。これらのバージョンでは、 text/html
以外のタイプの圧縮を扱うことができません。 4.06, 4.07, 4.08 は html ファイルの伸張にも問題を抱えています。 ですからこれらに対しては、完全に deflate フィルタをオフにします。
ディレクティブで、推測したユーザーエージェントを修正します。 なぜなら Microsoft Internet Explorer も "Mozilla/4" と特定されますが、 これらは実際には圧縮を扱うことができるからです。 BrowserMatchUser-Agent
は「単語の境界」を意味します) の追加文字で検査して、 これ以前に設定した制限を再び解除します。
フィルタは必ず、PHP や SSI といった RESOURCE フィルタの後になります。 DEFLATE フィルタは内部的なサブリクエストを関知しません。
モジュールは、gzip 圧縮されたレスポンス 本文を inflate/uncompress するフィルタも提供しています。 この機能を有効にするには、mod_deflate
ProxyPass http://example.com/
この例では、example.com からの gzip 圧縮された出力を伸長し、 その他のフィルタがさらにその出力を処理できるようにします。
ヘッダを含むリクエストが来ると、本体は自動的に伸張されます。 gzip リクエスト本体を送信するブラウザはあまりありません。 しかし、例えば WebDAV クライアントの幾つかなど、特別なアプリケーションでリクエストの 圧縮を実際にサポートしているものもあります。
リクエスト本体それ自体を評価する場合は、 Content-Length ヘッダを信用しないでください。Content-Length ヘッダは、 クライアントから送信されるデータの長さを反映しているのであって、 伸張されたデータストリームの
ヘッダを設定して、 追加の制限についてプロクシサーバに注意を行なう必要があります。 例えば User-Agent
リクエストヘッダ以外の情報 (例えば HTTP バージョン) に依存して圧縮するかどうか決める場合、 Vary
値は 1 (低圧縮) から 9 (高圧縮) です。
LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
CustomLog logs/deflate_log deflate
ログからもっと精密な値を抽出したい場合は、type 引数を使用して、データタイプをログのメモとして残すように指定できます。 type は次のうちの一つです。
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
None, but LimitRequestBody applies after deflation
モジュール | ディレクティブ | FAQ | 用語 | サイトマップ
Apache HTTP サーバ バージョン 2.4
Apache モジュール mod_deflate
翻訳済み言語: en | fr | ja | ko
圧縮を有効にする
圧縮機能は DEFLATE フィルタ により実装されています。以下のディレクティブはそのディレクティブのある コンテナ中のドキュメントを圧縮するようにします:
Proxy サーバでの扱い
mod_deflate モジュールは Vary: Accept-Encoding HTTP 応答ヘッダを送信して、適切な Accept-Encoding リクエストヘッダを送信するクライアントに対してのみ、 プロクシサーバがキャッシュした応答を送信するように注意を喚起します。 このようにして、圧縮を扱うことのできないクライアントに 圧縮された内容が送られることのないようにします。
DeflateBufferSize ディレクティブ
DeflateBufferSize ディレクティブは zlib が一度に圧縮する塊の大きさをバイト単位で指定します。
DeflateCompressionLevel ディレクティブ
DeflateCompressionLevel ディレクティブは 圧縮の程度を設定します。大きな値では、より圧縮が行なわれますが、 CPU 資源を消費します。
DeflateFilterNote ディレクティブ
DeflateFilterNote ディレクティブは 圧縮比に関するメモがリクエストに付加されることを指定します。 メモ (note) の名前はディレクティブに指定された値です。 メモはアクセスログに 値を記録し、統計を取る目的にも使えます。
DeflateInflateLimitRequestBody ディレクティブ
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
DeflateInflateRatioBurst ディレクティブ
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
DeflateInflateRatioLimit ディレクティブ
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
DeflateMemLevel ディレクティブ
DeflateMemLevel ディレクティブは zlib が圧縮に使うメモリのレベルを設定します (1 から 9 の間の値)。 (訳注: 2 を底とする対数の値になります。 8 程度が良いでしょう。)
DeflateWindowSize ディレクティブ
DeflateWindowSize ディレクティブは zlib の圧縮用ウィンドウ (訳注: zlib で使用される履歴バッファ) の大きさを指定します (1 から 15 の間の値)。 一般的に大きなウィンドウサイズを使用すると圧縮率が向上します。 (訳注: 2 を底とする対数の値になります。 8 から 15 にするのが良いでしょう。)