JSP 2.0,2.1 JSP ページ ISO-8859-1
2.10 HTTP レスポンス圧縮機能
2.10.2 HTTP レスポンス圧縮フィルタを使用するための条件
ここでは,HTTP レスポンス圧縮フィルタを使用する場合の条件や注意事項について説明します。
(1) 前提条件
HTTP レスポンス圧縮機能を使用にするには,次の前提条件を満たしている必要があります。
• Web クライアントの gzip 形式の対応
HTTP レスポンス圧縮機能を有効にした場合,gzip 形式で圧縮された HTTP レスポンスを Web クラ イアントで解凍する必要があります。そのため,Web クライアントが gzip 形式に対応していることが 前提となります。Web クライアントが gzip 形式に対応していない場合は,HTTP レスポンス圧縮機能 を有効にしていても,HTTP レスポンスは圧縮されません。
• Web クライアントの HTTP/1.1 の対応
HTTP レスポンス圧縮機能では,Web クライアントが gzip 形式に対応しているかどうかを HTTP リ クエストの Accept-Encoding ヘッダに指定された値によって判定しています。そのため,Web クラ イアントは Accept-Encoding ヘッダの仕様が規定されている HTTP/1.1 に対応している必要があり ます。
(2) 必要なメモリ量
HTTP レスポンス圧縮機能に必要なメモリ量は次の計算式で求められます。
HTTP レスポンス圧縮機能に必要なメモリ量(バイト)=HTTP レスポンス圧縮機能が有効となる HTTP リ クエストの同時実行数×レスポンスの圧縮しきい値(バイト)
圧縮しきい値とは,HTTP レスポンスボディのサイズによって,HTTP レスポンスを圧縮するかどうかを 判定するためのしきい値です。HTTP レスポンスボディのサイズが圧縮しきい値に定義したサイズを超え る場合にだけ,HTTP レスポンスを圧縮します。なお,圧縮しきい値は,HTTP リクエストに対して設定 します。
圧縮しきい値は,DD(web.xml)に定義します。圧縮しきい値を定義することで,HTTP レスポンスのサ イズが小さい場合に,HTTP レスポンスの圧縮に掛かる時間が,通信に掛かる時間よりも大きくならない ようにします。
圧縮しきい値は,圧縮するリソースの種別と通信回線の速度によって適切なサイズが決まります。圧縮しき い値に定義するサイズは実測で求め,適切なサイズを定義することを推奨します。
(3) HTTP レスポンス圧縮機能を有効にする場合の条件
HTTP レスポンス圧縮機能が有効になる条件を指定できます。指定できる条件を次に示します。
• HTTP リクエストの URL パターン
HTTP レスポンス圧縮フィルタを実装している Web アプリケーションに対するリクエストの URL が,指定した URL パターンと一致する場合,そのリクエストに対するレスポンスを圧縮します。
HTTP レスポンスの圧縮を実行する HTTP リクエストの URL パターンとして「*.html」を指定した場 合の例を次の図に示します。
図 2‒13 HTTP レスポンスの圧縮を実行する HTTP リクエストの URL パターンとして「*.html」を指 定した場合の例
• HTTP レスポンスの Media-Type
HTTP レスポンスの Content-Type ヘッダに含まれる Media-Type の値が,指定した値と一致する場 合,HTTP レスポンスを圧縮します。
HTTP レスポンスの Media-Type は,サーブレット/JSP の場合は J2EE アプリケーションが setContentType メソッドによって設定した値です。静的コンテンツの場合は拡張子に対応づけられ た MIME タイプとなります。
HTTP レスポンスの圧縮を実行する HTTP レスポンスの Media-Type として「text/html」を指定し た場合の例を次の図に示します。
図 2‒14 HTTP レスポンスの圧縮を実行する HTTP レスポンスの Media-Type として「text/html」
を指定した場合の例
• HTTP レスポンスのボディサイズ
HTTP レスポンスの圧縮を実行するためしきい値を設定して,ボディサイズがこのしきい値を超える場 合,HTTP レスポンスを圧縮します。
HTTP レスポンスの圧縮を実行する HTTP レスポンスのボディサイズとして「200 バイト」を指定し て HTTP レスポンス圧縮機能を有効にした場合の例を次の図に示します。
図 2‒15 HTTP レスポンスの圧縮を実行する HTTP レスポンスのボディサイズとして「200 バイト」
を指定した場合の例
(4) 注意事項
HTTP レスポンス圧縮フィルタの定義に関する注意事項
HTTP レスポンス圧縮フィルタを使用する場合,built-in フィルタの HTTP リクエストおよび HTTP レスポンスへの作用やフィルタ連鎖の順序制約を考慮して,Web アプリケーションに HTTP レスポン ス圧縮フィルタを組み込む必要があります。built-in フィルタの詳細については,「2.9.1 アプリケー ションサーバが提供するサーブレットフィルタ(built-in フィルタ)」を参照してください。
なお,Servlet 3.0 以降では,web.xml ではなく API でのフィルタ定義ができますが,built-in フィル タは API でのフィルタ定義はできません。
エラーページに関する注意事項
HTTP レスポンス圧縮機能を使用する Web アプリケーションでは,次の機能を使用してエラーページ をカスタマイズできます。
• Web サーバの機能を使用したエラーページのカスタマイズ
• インプロセス HTTP サーバによるエラーページのカスタマイズ
• web.xml の<error-page>タグを使用したエラーページのカスタマイズ
web.xml の<error-page>タグを使用したエラーページを使用する場合は,エラーページに静的コンテ ンツ,またはレスポンスから javax.servlet.ServletOutputStream を取得して使用するサーブレットを 指定してください。
HTTP レスポンス圧縮機能では圧縮後のデータの出力にレスポンスオブジェクトから取得した
javax.servlet.ServletOutputStream を使用します。そのため,エラーページを生成するサーブレット,
または JSP でレスポンスオブジェクトからは,java.io.PrintWriter を取得できません。