開発Blog

ブラウザキャッシュを利用して少しでもレスポンス向上

投稿日:2011-08-31 更新日:

こんにちは、開発本部の大西です。

最近の流れから、社内のネットワーク上でなく、インターネット上のSaaS/Cloud環境にintra-martを稼働させてアクセスしたりすることが多くなってきました。

そうすると、環境によってはネットワークの遅延が問題になることがでてくるようになってきました。
また、intra-mart自体もIM共通マスタやIM-WorkflowなどAjaxを多用する機能が増えてきており、
一つの画面を表示するのに、大量のJSファイルやCSSファイルや画像ファイルなどの静的ファイルを
読み込むようになっており、1画面を表示するためのリクエスト数が増加傾向にあります。

現状、この状況を解決する一番簡単な手段として、クライアントのブラウザのキャッシュ機能を有効活用することで、見かけ上のレスポンスを向上させることができます。

つまり、ブラウザにキャッシュされては困る、intra-mart上のプログラム上で生成されるコンテンツ自体はキャッシュさせずに、変更される頻度が低いクライアントサイドのJavaScriptファイル、CSSファイル、画像ファイルをブラウザ側にキャッシュさせ、毎回サーバ側に取得させなくすることで、ブラウザからのリクエスト数を減少させて、サーバの負荷を低減させ、見かけ上のレスポンスも向上させることが可能です。

具体的な対応方法としては、

WebPlatformで、ResinをWeb/APサーバとして利用している場合

AppRuntimeのconf/http.xmlの「<web-app id="/imart" ・・・」の<web-app>タグ内に
以下の設定を追記してください。

この設定で、拡張子が、js,css,png,gif.jpgの静的コンテンツが1D = 1日間(24時間)、ブラウザにキャッシュされ、キャッシュが存在した場合は、ブラウザはキャッシュを利用します。

また、これに合わせて、転送時のファイルサイズをGzip圧縮で圧縮する設定をあわせて行うことで、転送時間を抑えることができ、非常に効果的ですので、上記設定と合わせて設定していただくことを推奨致します。

GZIP圧縮の設定は、上記と同じ<web-app>タグ内に

を記載することで、APPサーバ側でGZIP圧縮することが可能になります。

Apacheを利用している場合

Apacheのconf/http.confに

を記載することで、上記と同じ動作になります。
なお、GZIP圧縮の設定は以下になります。

参考までに、私のローカル環境で確認したところ、
IM-Workflowの申請画面の根回しメールにある検索リンクを押下してから、
ユーザ検索画面が表示されるまでのリクエスト数とレスポンスタイムは以下のようになりました。

上記設定なし             :リクエスト数:142 レスポンスタイム:2.36秒
上記設定あり(1回目のリクエスト) :リクエスト数:117 レスポンスタイム:1.49秒
上記設定あり(2回目のリクエスト) :リクエスト数:12  レスポンスタイム:0.65秒

とローカル環境でも効果はありますので、どの環境でも効果はあると思います。

なお、注意点として、上記に説明している通り、上記設定を行った場合、静的コンテンツを
指定期間ブラウザにキャッシュすることになりますので、今後のパッチの適用等でCSSやJSファイルに変更があった場合にパッチ適用しても有効にならず、不具合が発生する場合がありますので、その場合は、ブラウザのキャッシュを消去して頂く必要がありますので、ご注意ください。

-開発Blog
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

「im-J2EE Framework」仕様書

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 技術者向け資料が新しく公開されました …

no image

intra-martの WebServer機能について

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 ベースモジュールver2.X以前では …

no image

Formaボタンアイテムのクリック時に任意の処理を追加するには

今回のブログ記事では、ボタンアイテムのクリック時に呼び出されるアイテム固有の処理(データの登録・画面遷移など)の前に、入力値の加工など独自の業務処理をスクリプトとして実行する方法を紹介します。 &nb …

no image

intra-mart Advent Calendar 2013 第16日:ユーティリティメニュー(右上のヤーツ)の機能を追加、削除する方法

この記事は、intra-mart Advent Calendar 2013 第16日の記事です。 先日、ご紹介した「intra-mart Advent Calendar 2013 第7日:個人設定メニ …

no image

トイレの空き状況の見える化システム

初めまして、開発本部の矢野と申します。 この記事では今までとはちょっと違い、intra-mart 社の普段の雰囲気を感じていただくために、製品の説明や紹介ではなく、私がつい最近取り組んだ日常的な仕事に …

まだデータがありません。

RSSRSSRSSRSS