更新 : 2007 年 11 月
出力キャッシュに格納するページのバージョンを切り替えることができるのと同様に、ユーザー コントロールを使って、ページの特定の領域を出力キャッシュに格納できます。出力キャッシュに格納するには、ユーザー コントロールの名前と GET クエリ文字列またはフォームの POST パラメータ値、あるいはパラメータ値だけによってユーザー コントロールの出力を切り替えます。また、ページのユーザー コントロールをその .aspx ファイルで複数回宣言しても、そのユーザー コントロールの複数のバージョンをキャッシュできます。これらの方法は、ユーザー コントロールを出力キャッシュに格納することを .ascx ファイルで @ OutputCache ディレクティブを使用して指定する場合にも、ユーザー コントロールを分離コード クラスで開発するときに PartialCachingAttribute 属性を使用して指定する場合にも使用できます。
ユーザー コントロールの @ OutputCache ディレクティブは、VaryByParam、VaryByCustom、VaryByControl、および Shared の 4 つの属性をサポートしています。PartialCachingAttribute クラスには、VaryByParams、VaryByControls、VaryByCustom、および Shared の 4 つのプロパティが含まれています。これらのプロパティを使用すると、ユーザー コントロールに属性を追加する場合と同じ処理を分離コード クラスで実行できます。
出力キャッシュが設定されたユーザー コントロールを含む ASP.NET ページが初めて要求されると、コントロールの出力のインスタンスがメモリに保存されます。既定では、同じユーザー コントロールを含むページが要求されるたびに、そのユーザー コントロールの出力の新しいインスタンスがメモリに追加されます。
たとえば、出力キャッシュを設定した Sample.ascx という名前のユーザー コントロールを作成し、Sample.ascx をアプリケーション内の 25 個の ASP.NET ページに追加した場合は、最低でも 25 個のバージョンの Sample.ascx が出力キャッシュに格納されます。また、VaryByControl、VaryByCustom、または VaryByParam の各属性を使用してユーザー コントロールのキャッシュの動作を変更すると、さらに多くのバージョンのユーザー コントロール出力をキャッシュできます。たとえば、TextBox Web サーバー コントロールをユーザー コントロールに組み込み、その ID プロパティを MyTextBox に設定したとします。この場合、VaryByControl 属性を MyTextBox に設定すると、MyTextBox コントロールが異なる値を受け取るごとに、ユーザー コントロール出力の 1 つのバージョンがキャッシュに格納されます。
同じユーザー コントロールが同じアプリケーション内の複数のページで使用されている場合は、ユーザー コントロールの @ OutputCache ディレクティブの Shared 属性を true に設定するか、コントロールの PartialCachingAttribute 属性の Shared プロパティを true に設定することによってメモリを節約できます。つまり、各ページは、ユーザー コントロール出力の同じインスタンスにアクセスします。一般的に使用されるユーザー コントロールや頻繁にキャッシュされるユーザー コントロールで Shared プロパティを使用すると、メモリの使用量を大幅に節約できます。
ユーザー コントロール出力を出力キャッシュに追加する場合と、ページ出力を出力キャッシュに追加する場合では、大きな違いがあります。どちらの出力キャッシュでも、GET クエリ文字列およびフォームの POST パラメータを使用して、出力の複数のバージョンを作成したり、キャッシュしたりできますが、ユーザー コントロールの場合は、HTTP ヘッダーに基づいてキャッシュすることはできません。
出力キャッシュされるユーザー コントロールを切り替えるには、次の 4 つの方法があります。
VaryByParam 属性または PartialCachingAttribute クラスの VaryByParams プロパティを使用できます。これらは、ページ出力キャッシュの場合と同様の機能を提供します。どちらも任意の文字列に設定できますが、作成するユーザー コントロールに関連付けられた GET クエリ文字列またはフォームの POST パラメータと等しくする必要があります。
VaryByControl 属性または PartialCachingAttribute クラスの VaryByControls プロパティを使用して、ユーザー コントロールに含まれている ASP.NET サーバー コントロールの ID プロパティに応じて、出力キャッシュされるユーザー コントロールを変更します。
VaryByCustom 属性または PartialCachingAttribute クラスの VaryByCustom プロパティを使用して、キャッシュするユーザー コントロール出力を切り替えるときの基準となるカスタム文字列のコードを定義できます。この結果、VaryByControl 属性でページ出力キャッシュを変更する方法と同様の動作が得られます。詳細については、「方法 : カスタム文字列を使用してページの複数のバージョンをキャッシュする」を参照してください。
ユーザー コントロールの複数のインスタンスを ASP.NET ページに組み込みます。@ OutputCache ディレクティブの Shared 属性を true に設定していない場合は、コントロールの各インスタンスの出力がキャッシュされます。
これらの各トピックの詳細については、「方法 : パラメータに基づいたユーザー コントロールの複数バージョンをキャッシュする」および「方法 : 宣言的属性を使用してユーザー コントロールの複数のバージョンをキャッシュする」を参照してください。
参照
処理手順
方法 : パラメータに基づいたユーザー コントロールの複数バージョンをキャッシュする
方法 : 宣言的属性を使用してユーザー コントロールの複数のバージョンをキャッシュする