ステップ 7 ハンズオン:

出力キャッシュによるパフォーマンス向上

マイクロソフト株式会社 デベロッパーマーケティング本部
デベロッパーエバンジェリスト 西谷亮

目標 Web アプリケーションにおけるキャッシュ技術の活用方法を理解
使用技術
  • ASP.NET
  • Visual Basic .NET
取り上げるトピックス
  • Web アプリケーションにおけるキャッシュの効果
  • ASP.NET でどのように実装するとキャッシュが利用できるか
  • キャッシュ技術の応用方法
前提知識
備考 サンプルアプリケーションでは、「 10 行でズバリ !! - ADO.NET によるデータの取得」を利用して、Web アプリケーションにおけるキャッシュの利用方法を検証していきます。

キャッシュの利用

Output Cache の機能を利用することで、一度生成されたページをメモリにキャッシュし、実行されるたびにデータベースなどにアクセスしない状態で画面を表示させることができるようになります。

Output Cache の機能を利用するには、以下の手順を行い、必要なコードを挿入します。

Output Cache を使用したいページ (ここでは WebForm1.aspx) のデザイン画面を開きます。

画面下に表示されているタブで [デザイン] から [HTML] へ切り替えます。切り替えるには、ボタンをクリックします。

ページの上部に以下のコードを挿入します。

<%@ OutputCache Duration="30" VaryByParam="none" %>

ここでは、メモリ上へのキャッシュ時間を 30 秒に設定しています。この設定は、OutputCache ディレクティブの Duration 属性に 30 を設定することで実現できます。

挿入したときのコードは以下のような画面になります。

図 1 : ディレクティブ挿入後の画面

ページの修正

キャッシュがちゃんと行われているか確認できるようにするために先ほど作成したページにページの生成時間を表示されるようにしておきます。

画面を HTML ビューからデザインビューへ切り替えて、以下の作業を行っておきます。

画面左に表示されているツールボックスから Label コントロールをグリッドの上部にドラッグアンドドロップします。
時間を表示しますので適度な大きさにしておきます。

図 2 : Label コントロールが配置された状態

コードウィンドを開き (デザイン画面をダブルクリックで開くこともできます)、Page_Load イベントに Label コントロールに時間を表示するためのコードを追加します。

Label1.Text = “生成時間 : ” & Now.ToString()

図 3 : コードウィンドウ上でコードが追加された状態

ここまでの作業が完了したら、[ソリューションのビルド]を行っておきます。

実行してみる

先ほどと同じように [ソリューションエクスプローラ] 上で作成されたページ (ここでは WebForm1.aspx となっています) を右クリックし、ポップアップメニューから [ブラウザで表示] をクリックします。
すると、改良した作成されたページが実行されます。

画面が表示されたら F5 キーなどを利用して、画面のリロード (再描画) をして見ましょう。

すると、画面上部に表示された時間は、変わりません。そして、一定時間 (この例の場合 30 秒) するとその時間に表示が変わります。

図 4 : 生成時間が表示されている例 (初回実行時)

図 5 : 生成時間が表示されている例 (30 秒後)

これは、一度ページが実行されると、その結果がメモリ上に保持され、次回以降のリクエストが行われたときにメモリ上に格納された実行結果を返しているためにこのような画面表示になります。

では、まとめましょう。

まとめ 「キャッシュの利用とは?」

Output Cache を利用すると、ページに対してリクエストが行われるたびに画面を生成するのではなく、メモリ上に格納されたすでに実行された結果を返すことができます。
これによって、Web アプリケーションにおけるレスポンスタイムを短縮することなどができるようになります。

注意しなければならないのは、生成されたページがメモリ上に格納されるということです。
すべてのページをこのキャッシュによって格納すればよいというわけではありません。

たとえば、静的な情報を提供するページやよく使用されるページは格納し、動的に生成されるべきページやあまり使用されないページなどはキャッシュをしないという選択を検討する必要があります。
必要に応じたキャッシュの利用によって ASP.NET を利用した Web アプリケーションのパフォーマンス向上を図ることができます。

この Output Cache を応用することで部分キャッシュ (ページの一部だけをキャッシュする) ということもできるようになります。Web アプリケーションの要件に応じて、どの部分で使用し、どの部分では使用しないという選択を行う必要があることを付け加えておきましょう。

参考資料 :

  • OutputCache ディレクティブの構文の詳細については、MSDN ライブラリにあるドキュメントを参考にしてください。
  • 前提知識の確認にハンズオン 入門編をご利用ください。

では、これで 「ハンズオン: 出力キャッシュによるパフォーマンス向上」を終了します。

 

ページのトップへ