ControlCachePolicyとは? わかりやすく解説

ControlCachePolicy クラス

メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。

ASP.NET ユーザー コントロールの出力キャッシュ設定に対する、プログラムによるアクセス手段を提供します。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public NotInheritable Class
 ControlCachePolicy
Dim instance As ControlCachePolicy
public sealed class ControlCachePolicy
public ref class ControlCachePolicy sealed
public final class ControlCachePolicy
public final class ControlCachePolicy
解説解説

ControlCachePolicy クラスは、ユーザー コントロールのプログラムを作成するときに、ユーザー コントロール (.ascx ファイル) の出力キャッシュ設定を指定するために開発者が使用します。ASP.NET では、ユーザー コントロールは BasePartialCachingControl インスタンス内に埋め込まれます。BasePartialCachingControl クラスは、出力キャッシュが有効になったユーザー コントロールを表すクラスです。PartialCachingControl コントロールの BasePartialCachingControl.CachePolicy プロパティにアクセスすると、有効な ControlCachePolicy オブジェクトをいつでも受け取ることができます。ただし、UserControl コントロールの UserControl.CachePolicy プロパティにアクセスする場合は、ユーザー コントロールが既に BasePartialCachingControl コントロールによってラップされている場合しか、有効な ControlCachePolicy オブジェクトを受け取ることはできません。ユーザー コントロールがラップされていない場合は、プロパティから返された ControlCachePolicy オブジェクトを操作しようとすると例外がスローされます。これは、このオブジェクトに関連付けられた BasePartialCachingControl が存在しないためです。UserControl インスタンスでキャッシュがサポートされているかどうかを、例外を生成せずに判断するには、SupportsCaching プロパティを調べます。

出力キャッシュを有効にできる方法の 1 つは、ControlCachePolicy クラスを使用することです。出力キャッシュを有効にするために使用できる方法は、次のとおりです。

使用例使用例

実行時にプログラムからユーザー コントロールを動的に読み込み、操作する方法を次のコード例に示します。PartialCachingAttribute 属性が SimpleControl というユーザー コントロールに適用されます。これは、ユーザー コントロールが実行時に PartialCachingControl コントロールによってラップされることを意味します。SimpleControl オブジェクトのキャッシュ設定は、関連付けられた ControlCachePolicy オブジェクト (このオブジェクトをラップする PartialCachingControl コントロールへの参照を使用してアクセス可能) を通じてプログラムから操作できます。この例では、ページの初期化中に Duration プロパティを調べ、いくつかの条件を満たした場合、SetSlidingExpiration メソッドと SetExpires メソッドを使用して変更を加えます。

<%@ Page Language="VB" %>
<%@ Reference Control="SimpleControl.ascx" %>
<script language="VB" runat="server">

    ' The following example demonstrates how to load a user control
 dynamically at run time, and
    ' work with the ControlCachePolicy object associated with it.

    ' Loads and displays a UserControl defined in a seperate Logonform.ascx
 file.
    ' You need to have "SimpleControl.ascx" file in 
    ' the same directory as the aspx file. 

    Sub Page_Init(ByVal sender As
 Object, ByVal e As System.EventArgs)
    
        ' Obtain a PartialCachingControl object which wraps the 'LogOnControl'
 user control.
        Dim pcc As PartialCachingControl
        pcc = LoadControl("SimpleControl.ascx")
    
        ' If the control is slated to expire in greater than 60 Seconds
        If (pcc.CachePolicy.Duration > TimeSpan.FromSeconds(60))
 Then
            ' Make it expire faster. Set a new expiration time to 30
 seconds, and make it
            ' an absolute expiration if it isnt already.        
            pcc.CachePolicy.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(30)))
            pcc.CachePolicy.SetSlidingExpiration(False)
        End If
        Controls.Add(pcc)
    End Sub
</script>
<%@ Page Language="C#" %>
<%@ Reference Control="SimpleControl.ascx" %>
<script language="C#" runat="server">

// The following example demonstrates how to load a user control dynamically
 at run time, and
// work with the ControlCachePolicy object associated with it.

// Loads and displays a UserControl defined in a seperate Logonform.ascx
 file.
// You need to have "SimpleControl.ascx" file in 
// the same directory as the aspx file. 

void Page_Init(object sender, System.EventArgs e) {
    
    // Obtain a PartialCachingControl object which wraps the 'LogOnControl'
 user control.
    PartialCachingControl pcc = LoadControl("SimpleControl.ascx") as PartialCachingControl;
        
    
    // If the control is slated to expire in greater than 60 Seconds
    if (pcc.CachePolicy.Duration > TimeSpan.FromSeconds(60)
 ) 
    {        
        // Make it expire faster. Set a new expiration time to 30 seconds,
 and make it
        // an absolute expiration if it isnt already.        
        pcc.CachePolicy.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(30)));
        pcc.CachePolicy.SetSlidingExpiration(false);
    }                    
    Controls.Add(pcc);
}
</script>

Web フォーム ページから SimpleControl ユーザー コントロールを使用する方法を次のコード例に示します。この例を正常に実行するには、ユーザー コントロール ファイル (.ascx)、それに対応する分離コード ファイル (.cs または .vb)、およびそのユーザー コントロール (.aspx) をホストする Web フォーム ページが同じディレクトリ内にあることを確認してください。

Imports System.Data.SqlClient

Partial Class SimpleControl
    Inherits System.Web.UI.UserControl

    Protected Sub Page_Load(ByVal
 sender As Object, ByVal
 e As EventArgs)
        ItemsRemaining.Text = GetAvailableItems().ToString()
        CacheTime.Text = DateTime.Now.ToLongTimeString()
    End Sub

    Private Function GetAvailableItems() As
 Integer
        Dim sqlConnection As SqlConnection
        Dim sqlCommand As SqlCommand
        Dim items As Integer

        sqlConnection = New SqlConnection("Initial
 Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;")
        sqlCommand = sqlConnection.CreateCommand()
        sqlCommand.CommandType = Data.CommandType.StoredProcedure
        sqlCommand.CommandText = "GetRemainingItems"
        sqlConnection.Open()
        items = CInt(sqlCommand.ExecuteScalar())
        sqlConnection.Close()
        Return items
    End Function
End Class
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

[PartialCaching(100)]
public partial class SimpleControl : System.Web.UI.UserControl
{    
    protected void Page_Load(object sender,
 EventArgs e)
    {
        ItemsRemaining.Text = GetAvailableItems().ToString();
        CacheTime.Text = DateTime.Now.ToLongTimeString();
    }

    private int GetAvailableItems()
    {
        SqlConnection sqlConnection = new SqlConnection
            ("Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;");
        SqlCommand sqlCommand = sqlConnection.CreateCommand();
        sqlCommand.CommandType = CommandType.StoredProcedure;
        sqlCommand.CommandText = "GetRemainingItems";
        sqlConnection.Open();
        int items = (int)sqlCommand.ExecuteScalar();
        sqlConnection.Close();
        return items;
    }
}
<%@ Control Language="VB" AutoEventWireup="true"
 CodeFile="SimpleControl.ascx.vb" Inherits="SimpleControl"
 %>
<form>
<table cellspacing=15>
<tr>
<td><b>Available items: </b></td>
<td>
    <asp:Label ID="ItemsRemaining" runat="server"
 Text="Label"></asp:Label>
</td>
</tr>
<tr>
<td><b>As of: </b></td>
<td>
    <asp:Label ID="CacheTime" runat="server"
 Text="Label"></asp:Label>
</td>
</tr>
</table>
</form>
<%@ Control Language="C#" AutoEventWireup="true"
 CodeFile="SimpleControl.ascx.cs" Inherits="SimpleControl" %>
<form>
<table cellspacing=15>
<tr>
<td><b>Available items: </b></td>
<td>
    <asp:Label ID="ItemsRemaining" runat="server" Text="Label"></asp:Label>
</td>
</tr>
<tr>
<td><b>As of: </b></td>
<td>
    <asp:Label ID="CacheTime" runat="server" Text="Label"></asp:Label>
</td>
</tr>
</table>
</form>
継承階層継承階層
System.Object
  System.Web.UI.ControlCachePolicy
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ControlCachePolicy メンバ
System.Web.UI 名前空間
BasePartialCachingControl.CachePolicy プロパティ
UserControl.CachePolicy
その他の技術情報
@ OutputCache
ASP.NET ページの一部だけのキャッシュ

ControlCachePolicy プロパティ


ControlCachePolicy メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド SetExpires ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、指定された日時にキャッシュ エントリの有効期限が切れるように指示します。
パブリック メソッド SetSlidingExpiration ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、ユーザー コントロールのキャッシュ エントリで変化する有効期限または絶対有効期限が使用されるように設定するよう指示します。
パブリック メソッド SetVaryByCustom 出力キャッシュがユーザー コントロールを変更するために使用するカスタム文字列のリストを設定します。
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ControlCachePolicy クラス
System.Web.UI 名前空間
BasePartialCachingControl.CachePolicy プロパティ
UserControl.CachePolicy

その他の技術情報

@ OutputCache
ASP.NET ページの一部だけのキャッシュ

ControlCachePolicy メンバ

ASP.NET ユーザー コントロールの出力キャッシュ設定に対する、プログラムによるアクセス手段を提供します。

ControlCachePolicy データ型で公開されるメンバを以下の表に示します。


パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド SetExpires ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、指定された日時にキャッシュ エントリの有効期限が切れるように指示します。
パブリック メソッド SetSlidingExpiration ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、ユーザー コントロールのキャッシュ エントリで変化する有効期限または絶対有効期限が使用されるように設定するよう指示します。
パブリック メソッド SetVaryByCustom 出力キャッシュがユーザー コントロールを変更するために使用するカスタム文字列のリストを設定します。
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ControlCachePolicy クラス
System.Web.UI 名前空間
BasePartialCachingControl.CachePolicy プロパティ
UserControl.CachePolicy

その他の技術情報

@ OutputCache
ASP.NET ページの一部だけのキャッシュ



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ControlCachePolicy」の関連用語

ControlCachePolicyのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ControlCachePolicyのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS