8.7.2 静的コンテンツをキャッシュする
Webコンテナでは,静的コンテンツをメモリに保持(キャッシュ)できます。一度アクセスした静的コンテンツの内容をメモリに保持しておくことによって,2回目以降のアクセス時のファイルシステムへのアクセス回数を減らし,応答速度の向上を図れます。
ここでは,静的コンテンツをキャッシュする場合に必要なチューニングの方法について説明します。
チューニングできるのは,次の項目です。
-
静的コンテンツをキャッシュするかどうかの選択
-
静的コンテンツのキャッシュに使用するメモリサイズの上限値
-
キャッシュする静的コンテンツのファイルサイズの上限値
それぞれについて説明します。なお,これらの項目は,Webコンテナ単位およびWebアプリケーション単位で設定できます。Webアプリケーション単位の設定は,Webコンテナ単位の設定よりも優先されます。このため,J2EEサーバ全体としてデフォルトの値を指定したい場合はWebコンテナ単位の値に設定して,細かな設定をしたい場合は適宜Webアプリケーション単位に設定してください。
- ポイント
-
メモリサイズの見積もりとの関係
静的コンテンツのキャッシュでは,メモリを使用して応答速度の向上を図ります。このため,この機能を使用する場合は,サーバで使用できるメモリ量に応じてチューニングする必要があります。
静的コンテンツのキャッシュで使用するメモリサイズは,Webアプリケーション単位に設定します。Webアプリケーション単位に設定したメモリサイズの合計値が,J2EEサーバ全体で静的コンテンツのキャッシュのために使用するメモリサイズの最大値になります。このため,この機能を使用する場合は,J2EEサーバで必要なメモリサイズを見積もる際に,Webアプリケーション単位に設定したメモリサイズの合計値を加算してください。
- 〈この項の構成〉
(1) 静的コンテンツをキャッシュするかどうかの選択
静的コンテンツのキャッシュは,デフォルトの設定では使用されない機能です。このため,使用する場合はパラメタを変更する必要があります。
なお,静的コンテンツのキャッシュの使用は,Webコンテナ単位およびWebアプリケーション単位で設定でき,Webアプリケーション単位の設定は,Webコンテナ単位の設定よりも優先されます。ただし,Webコンテナ単位の設定で強制的な無効を選択している場合は,Webアプリケーション単位の設定も無効になります。強制的な無効は,次のような場合に使用できます。
-
静的コンテンツのキャッシュを有効にしたときと無効にしたときのメモリ使用量の差を検証したい場合
-
Webアプリケーション単位の設定を保持した状態で静的コンテンツのキャッシュを一時的に無効にしたい場合
(2) 静的コンテンツのキャッシュに使用するメモリサイズの上限値
静的コンテンツをキャッシュするために,Webアプリケーション単位で使用するメモリサイズを設定できます。なお,それぞれのWebアプリケーションで設定した値よりもキャッシュの合計サイズが大きくなる場合は,アクセスされていない時間が最も長いキャッシュから削除されます。削除は,キャッシュの合計サイズが設定値以下になるまで繰り返されます。
メモリサイズの設定の指針を次に示します。
- メモリサイズの設定の指針
-
-
Webアプリケーション内に含まれる静的コンテンツのサイズの合計値以下の値を設定します。
-
Webアプリケーションの内容によって最適な値は異なります。このため,値を設定してから静的コンテンツに対するリクエストの応答速度を測定して,高い効果が出る最適なキャッシュのサイズを見つける必要があります。
-
(3) キャッシュする静的コンテンツのファイルサイズの上限値
静的コンテンツのキャッシュの対象とするコンテンツのファイルサイズの上限を設定できます。上限を設定した場合,上限を超えるファイルサイズのコンテンツについてはキャッシュされないで,使用するたびに毎回ファイルシステムから取得されます。
ファイルサイズの設定の指針を次に示します。
- ファイルサイズの設定の指針
-
-
Webアプリケーション内に含まれる静的コンテンツ中の,ファイルサイズが最大であるコンテンツのファイルサイズ以下の値を設定します。
-
大きなサイズの静的コンテンツがキャッシュされることによって,アクセス頻度の高いほかの静的コンテンツのキャッシュが破棄されないように留意して,値を設定します。
-
(4) 静的コンテンツの稼働状況の確認
静的コンテンツの稼働状況は,Webアプリケーションを停止したときに出力されるメッセージKDJE39234-Iの出力内容で確認できます。キャッシュされている静的コンテンツの合計サイズやコンテンツの個数などが出力されるので,必要に応じて各パラメタをチューニングしてください。