9.2.4 DDでの定義
ここでは,HTTPレスポンス圧縮機能を使用する場合に必要なDDの定義について説明します。
HTTPレスポンス圧縮機能を有効にするためには,WebアプリケーションのDDに,フィルタ定義およびフィルタマッピング定義を追加する必要があります。HTTPレスポンス圧縮機能は,フィルタマッピング定義によってマッピングされたURLパターンを持つリソースに対してリクエストがあった場合にだけ有効となります。
HTTPレスポンス圧縮機能の定義は,web.xmlに指定します。
DDでのHTTPレスポンス圧縮機能の定義について次の表に示します。
設定項目 |
指定するタグ |
設定内容 |
---|---|---|
フィルタ定義 |
<filter>タグ内の<filter-name>タグ |
追加するフィルタ名称を指定します。設定値は,固定値です。
|
<filter>タグ内の<filter-class>タグ |
追加するフィルタのクラス名を指定します。設定値は,固定値です。
|
|
URLパターンとHTTPレスポンス圧縮規則のマッピング |
<filter-class><init-param>タグ内の<param-name>タグ,<param-value>タグ |
URLパターンとHTTPレスポンス圧縮機能のマッピングを指定します。 詳細については,「9.2.4(1) URLパターンとHTTPレスポンス圧縮規則のマッピング(url-mapping)」を参照してください。 |
HTTPレスポンス圧縮規則 |
HTTPレスポンスの圧縮規則として,圧縮規則名,Media-Typeと圧縮しきい値を指定します。 詳細については,「9.2.4(2) HTTPレスポンス圧縮規則」を参照してください。 |
|
フィルタマッピング定義 |
<filter-mapping>タグ内の<filter-name>タグ |
フィルタ名称を指定します。設定値は,固定値です。
|
<filter-mapping>タグ内の<url-pattern>タグ |
URLパターンやサーブレットクラスと,HTTPレスポンス圧縮フィルタのマッピングを指定します。HTTPレスポンス圧縮機能は,フィルタマッピング定義によって,マッピングされたURLパターンを持つリソースに対してリクエストがあった場合だけ有効となります。 設定値は,任意です。 |
次に示すDDの定義例を基に,DDの定義内容を説明します。
: <filter> <filter-name>com.hitachi.software.was.web.ResponseCompressionFilter</filter-name> <filter-class>com.hitachi.software.was.web.ResponseCompressionFilter</filter-class> <init-param> <param-name>url-mapping</param-name> <param-value> /*=rule1; </param-value> </init-param> <init-param> <param-name>rule1</param-name> <param-value> *:1000; </param-value> </init-param> </filter> : <!-- The filter mappings for Response Compression Filter --> <filter-mapping> <filter-name>com.hitachi.software.was.web.ResponseCompressionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<filter>タグで囲まれた部分がフィルタ定義,<filter-mapping>タグで囲まれた部分がフィルタマッピング定義となります。フィルタ定義の<filter-name>タグおよび<filter-class>タグに指定する値は,次のパッケージ名で固定です。
com.hitachi.software.was.web.ResponseCompressionFilter
次に,DDの<init-param>タグ内に定義する内容を示します。
(1) URLパターンとHTTPレスポンス圧縮規則のマッピング(url-mapping)
HTTPレスポンス圧縮機能が有効となるURLパターンと,指定したURLパターンに適用するHTTPレスポンス圧縮規則名のマッピングを指定します。
パラメタ指定時の規則およびURLパターンのマッピング規則を示します。
(a) パラメタ指定時の規則
-
URLパターンは,大文字と小文字が区別されます。
-
HTTPレスポンス圧縮規則名は,大文字と小文字が区別されます。
-
URLパターンとHTTPレスポンス圧縮規則名は,半角のイコール(=)で区切ります。
-
複数指定する場合は,半角のセミコロン(;)で区切ります。
-
複数のURLパターンに該当する場合は,先に指定したものが使用されます。
-
パラメタ値の改行,タブ,スペースは無視されます。
-
パラメタ値の末尾にある半角のセミコロン(;)は無視されます。
(b) URLパターンのマッピング規則
url-mappingパラメタに定義するURLパターンには,パス一致,拡張子一致,および完全一致のマッピング規則が適用されます。それぞれのマッピング規則を次に示します。
-
パス一致
URLパターンとして「/」で始まり「/*」で終わる文字列を指定した場合は,リクエストURLのコンテキストルートからの相対パスがURLパターンの「*」を除く文字列で始まっているときに,一致したとみなされます。また,URLパターンとして「/*」を指定した場合は,すべてのリクエストURLが一致したとみなされます。
- (例)
-
URLパターンが「/jsp/*」では,リクエストURLのコンテキストルートからの相対パスが「/jsp/index.jsp」の場合に一致したとみなされます。
-
拡張子一致
URLパターンとして「*.」で始まる文字列を指定した場合は,リクエストURLの拡張子とURLパターンの「*.」に続く文字列と同じであるときに,一致したとみなされます。
- (例)
-
URLパターンが「*.jsp」では,リクエストURLのコンテキストルートからの相対パスが「/jsp/index.jsp」の場合に一致したとみなされます。
-
完全一致
URLパターンとして「/」で始まる上記以外の文字列を指定した場合は,リクエストURLのコンテキストルートからの相対パスがこのURLパターンと完全に同じであるときに,一致したとみなされます。
- (例)
-
URLパターンが「/jsp/index.jsp」では,リクエストURLのコンテキストルートからの相対パスが「/ jsp/index.jsp」の場合に一致したとみなされます。
(2) HTTPレスポンス圧縮規則
圧縮するHTTPレスポンスのMedia-Typeと圧縮しきい値を指定します。
- Media-Type
-
HTTPレスポンス圧縮機能では,条件として指定したMedia-TypeがHTTPレスポンスに含まれる場合に,HTTPレスポンスを圧縮します。
- 圧縮しきい値
-
圧縮しきい値は,100から2,147,483,647までの整数値で指定します。デフォルトの設定では,すべてのMedia-Typeに対して圧縮しきい値「100」が適用されます。
圧縮しきい値とは,HTTPレスポンスボディのサイズによって,HTTPレスポンスを圧縮するかどうかを判定するためのしきい値です。HTTPレスポンス圧縮機能では,HTTPレスポンスボディのサイズが圧縮しきい値に定義したサイズを超える場合に,HTTPレスポンスを圧縮します。
圧縮しきい値を定義することで,HTTPレスポンスのサイズが小さい場合に,HTTPレスポンスの圧縮に掛かる時間が,通信に掛かる時間よりも大きくならないようにします。
圧縮しきい値は,圧縮するリソースの種別と通信回線の速度によって適切なサイズが決まるので,圧縮しきい値に定義するサイズは実測で求め,適切なサイズを定義することをお勧めします。
パラメタ指定時の規則を示します。
-
Media-Typeにアスタリスク(*)を指定した場合は,すべてのMedia-Typeを表します。ただし,Media-Typeごとの指定がある場合は,Media-Typeごとの指定が優先されます。
-
Media-Typeは,大文字と小文字が区別されません。
-
Media-Typeと圧縮しきい値は,半角のコロン(:)で区切ります。
-
複数指定する場合は半角のセミコロン(;)で区切ります。
-
同じMedia-Typeを複数指定した場合はあとに指定したものが使用されます。
-
パラメタ値の改行,タブ,スペースは無視されます。
-
パラメタ値の末尾にある半角のセミコロン(;)は無視されます。
(3) 注意事項
HTTPレスポンス圧縮フィルタの設定時の注意事項を次に示します。
-
レスポンス圧縮用フィルタの初期化時に,フィルタの初期化パラメタの妥当性をチェックします。ここで初期化パラメタに定義された値に問題がある場合は,フィルタの初期化処理でエラーとなり,Webアプリケーションは開始しません。
-
リクエストURLがurl-mappingパラメタに指定したURLパターンに一致しても,レスポンス圧縮用フィルタがマッピングされているURLパターンに一致しない場合は,url-mappingパラメタに指定したレスポンス圧縮規則が適用されることはありません。
-
レスポンス圧縮フィルタに複数のURLパターンをマッピングする場合は,リクエストURLが同時に複数のURLパターンに一致しないようにフィルタマッピングの定義を記述する必要があります。複数のURLパターンに対して異なるレスポンス圧縮機能を設定する場合は,url-mappingパラメタに複数のURLパターンを指定してください。
-
WebアプリケーションのバージョンがServlet 2.4以降の場合,<filter-mapping>の<dispatcher>タグは指定しないでください。また,<dispatcher>タグで「FORWARD」,「INCLUDE」,「ERROR」を指定した場合,Webアプリケーションの開始時にエラーが発生し,アプリケーションが開始できないので,注意してください。