キャッシュ ページの動的な部分更新
更新 : 2007 年 11 月
ページのキャッシュを行うと、Web アプリケーションのパフォーマンスを大幅に向上できます。しかし、ページの大部分をキャッシュするが、ページ内の一部のフラグメントを動的にする必要がある場合もあります。たとえば、設定された期間にわたって完全に静的なニュース記事のページを作成する場合は、ページ全体をキャッシュするように設定できます。ページが要求されるたびに変更されるローテーション型のバナー広告を含める場合は、ページ上の広告を含む部分を動的にする必要があります。
ページをキャッシュするが、一部のコンテンツは動的にするという場合は、ASP.NET のキャッシュ後の置換を使用できます。キャッシュ後の置換では、特定の部分をキャッシュしないように設定して、ページ全体を出力キャッシュします。バナー広告の例では、AdRotator コントロールによってキャッシュ後の置換を利用し、ユーザーおよびページの更新ごとに広告が動的に作成されるように設定できます。
キャッシュ後の置換を実装するには、次の 3 つの方法があります。
Substitution コントロールを使用して、宣言で実装する。
Substitution コントロール API を使用して、プログラムで実装する。
AdRotator コントロールを使用して、暗黙的に実装する。
Substitution コントロール
ASP.NET の Substitution コントロールは、キャッシュするページの、キャッシュせずに動的に作成する部分を指定します。ページ上の動的コンテンツを表示する場所に Substitution コントロールを配置します。
実行時に、Substitution コントロールは、MethodName プロパティで指定したメソッドを呼び出します。メソッドは文字列を返し、この文字列が Substitution コントロールのコンテンツと置き換わります。このメソッドは、含まれている Page コントロールまたは UserControl コントロールの静的メソッドである必要があります。
substitution コントロールを使用すると、クライアント側キャッシュ機能がサーバー キャッシュ機能に変更され、ページがクライアント側でキャッシュされなくなります。これにより、今後ページが要求されたときには再びこのメソッドが呼び出され、動的コンテンツが生成されます。
Substitution API
キャッシュされるページの動的コンテンツをプログラムで作成するには、ページのコードで WriteSubstitution メソッドを呼び出し、メソッドの名前をパラメータとして渡します。動的コンテンツの作成を処理するメソッドは 1 つの HttpContext パラメータを受け取り、文字列を返します。返される文字列は、指定した場所で置換されるコンテンツです。Substitution コントロールを宣言で使用する代わりに WriteSubstitution メソッドを呼び出す場合の利点は、Page オブジェクトまたは UserControl オブジェクトの静的メソッドではなく、任意のオブジェクトのメソッドを呼び出すことができるという点にあります。
WriteSubstitution メソッドを呼び出すと、クライアント側キャッシュ機能がサーバー キャッシュ機能に変更され、ページがクライアント側でキャッシュされなくなります。これにより、今後ページが要求されたときには再びこのメソッドが呼び出され、動的コンテンツが生成されます。
AdRotator コントロール
AdRotator サーバー コントロールは、キャッシュ後の置換のサポートを内部的に実装します。ページ上に AdRotator コントロールを配置すると、このコントロールは、親ページがキャッシュされたかどうかには関係なく、要求のたびに異なる広告を表示します。したがって、AdRotator コントロールを含むページは、サーバー側でのみキャッシュされます。