更新 : 2007 年 11 月
ユーザー コントロール出力のキャッシュは次の 2 つの方法で切り替えることができます。
クエリ文字列またはフォームの POST パラメータと共にユーザー コントロール名を指定します。この操作は、@ OutputCache ディレクティブの VaryByParam 属性を使用して、宣言によって行うことができます。また、ユーザー コントロールのコード内で PartialCachingAttribute の VaryByParams プロパティを設定して、プログラミングによって行うこともできます。
ユーザー コントロールに含まれる ASP.NET サーバー コントロールの ID プロパティを指定します。この操作は、VaryByControl 属性を使用して、宣言によって行うことができます。また、PartialCachingAttribute の VaryByControls プロパティを設定して、プログラミングによって行うこともできます。
メモ :
キャッシュへのユーザー コントロール出力をクエリ文字列またはフォームの POST パラメータに基づいて切り替える方法は、ユーザー コントロール自体がポストバックし、ポストバックを処理する場合にだけ有効です。ユーザー コントロールが、ユーザー コントールを含むページにポストバックする場合は、このタイプのユーザー コントロール出力キャッシュは正しく機能しません。
VaryByControl 属性を使用して、ユーザー コントロールの複数のバージョンを宣言によってキャッシュするには
ポストバックするユーザー コントロールを作成します。
ユーザー コントロールに、Duration 属性と VaryByControl 属性を持つ @ OutputCache ディレクティブを含めます。
メモ :
このディレクティブで VaryByControl 属性を使用する場合は、VaryByParam 属性を含める必要はありません。ただし、この属性を含めて "None" と設定することはできます。
VaryByControl 属性に、ユーザー コントロール出力の切り替えの基準となるコントロールの ID を設定します。
たとえぱ、次の @ OutputCache ディレクティブでは、ユーザー コントロールの有効期限が 60 秒に設定され、コントロールの出力は、ID が State の ASP.NET サーバー コントロールに基づいて切り替わります。
<%@ OutputCache Duration="60" VaryByControl="State" %>
VaryByControls プロパティを使用して、ユーザー コントロールの複数のバージョンをプログラミングによってキャッシュするには
コード内に、それ自体へのポストバックを実行するユーザー コントロール コードを記述します。
ユーザー コントロール コードの先頭に、PartialCachingAttribute を組み込みます。
Duration パラメータに値を指定し、VaryByControls パラメータを、ユーザー コントロール出力を切り替えるときの基準とする、ユーザー コントロール内の ASP.NET サーバー コントロールの ID に設定します。
Duration を 60 秒に設定し、VaryByControls を State に設定するコード例を次に示します。このコードは、UserControl クラスを拡張するコードの前に置く必要があります。
[PartialCaching(60, null, State, null)]
<PartialCaching(60, null, State, null)>
VaryByParam 属性を使用して、ユーザー コントロールの複数のバージョンを宣言によってキャッシュするには
それ自体にポストバックするユーザー コントロールを作成します。
ユーザー コントロールに、Duration 属性と VaryByParam 属性を持つ @ OutputCache ディレクティブを含めます。
メモ :
ユーザー コントロールに対する @ OutputCache ディレクティブに VaryByControl 属性を指定した場合は、VaryByParam 属性を指定する必要はありません。
VaryByParam 属性に、ユーザー コントロールを切り替えるときの基準となる GET クエリ文字列パラメータまたはフォームの POST パラメータを設定します。
ユーザー コントロールの有効期限を 60 秒に設定し、コントロールの出力を State という名前のフォームの POST パラメータまたはクエリ文字列パラメータの値によって切り替える @ OutputCache ディレクティブの例を次に示します。
<%@ OutputCache Duration="60" VaryByParam="State" %>
VaryByParams プロパティを使用して、ユーザー コントロールの複数のバージョンをプログミングによってキャッシュするには
コード内に、それ自体へのポストバックを実行するユーザー コントロール コードを記述します。
ユーザー コントロール コードの先頭に、PartialCachingAttribute を組み込みます。
Duration パラメータに値を指定し、VaryByParams パラメータに、ユーザー コントロール出力を切り替える基準とする GET クエリ文字列パラメータまたはフォームの POST パラメータを設定します。
Duration を 60 秒に設定し、VaryByParams を State という名前のフォーム POST パラメータまたはクエリ文字列パラメータに設定するコード例を次に示します。このコードは、UserControl クラスを拡張するコードの前に置く必要があります。
[PartialCaching(60, State, null, null)]
<PartialCaching(60, State, null, null)>
参照
処理手順
方法 : 宣言的属性を使用してユーザー コントロールの複数のバージョンをキャッシュする