ControlCachePolicy ControlCachePolicy ControlCachePolicy ControlCachePolicy Class

定義

ASP.NET ユーザー コントロールの出力キャッシュ設定に対する、プログラムによるアクセス手段を提供します。Provides programmatic access to an ASP.NET user control's output cache settings.

public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
継承
ControlCachePolicyControlCachePolicyControlCachePolicyControlCachePolicy

次のコード例は、ユーザーコントロールを実行時にプログラムによって動的に読み込んで操作する方法を示しています。The following code example demonstrates how a user control can be loaded dynamically and manipulated programmatically at run time. 属性は、という名前SimpleControlのユーザーコントロールに適用されます。これは、ユーザー PartialCachingControlコントロールが実行時にコントロールによってラップされることを意味します。 PartialCachingAttributeThe PartialCachingAttribute attribute is applied to a user control named SimpleControl, which means the user control is wrapped by a PartialCachingControl control at run time. オブジェクトのキャッシュ設定は、関連付けらControlCachePolicyれたオブジェクトを使用してプログラムで操作できます。 PartialCachingControlこのオブジェクトは、ラップするコントロールへの参照を通じて使用できます。 SimpleControlThe SimpleControl object's caching settings can be programmatically manipulated through its associated ControlCachePolicy object, which is available through a reference to the PartialCachingControl control that wraps it. この例では、 Durationプロパティはページの初期化時に検査されSetSlidingExpirationSetExpiresいくつかの条件が満たされた場合にメソッドとメソッドを使用して変更されます。In this example, the Duration property is examined during page initialization and changed using the SetSlidingExpiration and SetExpires methods if some conditions are met.

<%@ 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>
<%@ 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>

次のコード例は、Web SimpleControlフォームページからユーザーコントロールを使用する方法を示しています。The following code example demonstrates using the SimpleControl user control from a Web Forms page. この例を正常に実行するには、ユーザーコントロールファイル (.ascx)、その分離コードファイル (.cs または .vb)、およびユーザーコントロール (.aspx) をホストする Web フォームページが同じディレクトリにあることを確認してください。To run this example successfully, make sure the user control file (.ascx), its code-behind file (.cs or .vb), and the Web Forms page that hosts the user control (.aspx) are in the same directory.

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;
    }
}
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
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SimpleControl.ascx.cs" Inherits="SimpleControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<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>
</body>
</html>
<%@ Control Language="VB" AutoEventWireup="true" CodeFile="SimpleControl.ascx.vb" Inherits="SimpleControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<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>
</body>
</html>

注釈

クラスControlCachePolicyは、プログラムユーザーコントロールのシナリオで、ユーザーコントロール (.ascx ファイル) の出力キャッシュ設定を指定するために、開発者によって使用されます。The ControlCachePolicy class is used by developers in programmatic user control scenarios to specify output caching settings for user controls (.ascx files). ASP.NET は、インスタンス内にBasePartialCachingControlユーザーコントロールを埋め込みます。ASP.NET embeds user controls within a BasePartialCachingControl instance. クラスBasePartialCachingControlは、出力キャッシュが有効になっているユーザーコントロールを表します。The BasePartialCachingControl class represents a user control that has output caching enabled. コントロールのプロパティBasePartialCachingControl.CachePolicyにアクセスすると、常に有効なControlCachePolicyオブジェクトが返されます。 PartialCachingControlWhen you access the BasePartialCachingControl.CachePolicy property of a PartialCachingControl control, you will always receive a valid ControlCachePolicy object. UserControl.CachePolicyただし、 UserControlコントロールのプロパティにアクセスする場合は、ユーザーコントロールが既ControlCachePolicyBasePartialCachingControlコントロールによってラップされている場合にのみ、有効なオブジェクトを受け取ります。However, if you access the UserControl.CachePolicy property of a UserControl control, you receive a valid ControlCachePolicy object only if the user control is already wrapped by a BasePartialCachingControl control. ラップされていない場合ControlCachePolicy 、プロパティによって返されるオブジェクトは、に関連付けらBasePartialCachingControlれていないため、操作を試みたときに例外をスローします。If it is not wrapped, the ControlCachePolicy object returned by the property will throw exceptions when you attempt to manipulate it because it does not have an associated BasePartialCachingControl. インスタンスがUserControl例外を生成せずにキャッシュをサポートするかSupportsCachingどうかを判断するには、プロパティを調べます。To determine whether a UserControl instance supports caching without generating exceptions, inspect the SupportsCaching property.

クラスのControlCachePolicy使用は、出力キャッシュを有効にするいくつかの方法の1つです。Using the ControlCachePolicy class is one of several ways you can enable output caching. 次の一覧では、出力キャッシュを有効にするために使用できる方法について説明します。The following list describes methods you can use to enable output caching:

  • ディレクティブを使用して、宣言型のシナリオで出力キャッシュを有効にします。Use the directive to enable output caching in declarative scenarios.

  • PartialCachingAttribute属性を使用して、分離コードファイル内のユーザーコントロールのキャッシュを有効にします。Use the PartialCachingAttribute attribute to enable caching for a user control in a code-behind file.

  • クラスを使用して、プログラムのシナリオでキャッシュ設定を指定しますBasePartialCachingControl 。これは、前のいずれかの方法を使用してキャッシュが有効にTemplateControl.LoadControlなっているインスタンスを操作し、メソッドを使用して動的に読み込むインスタンスを操作する場合に使用します。 ControlCachePolicyUse the ControlCachePolicy class to specify cache settings in programmatic scenarios in which you are working with BasePartialCachingControl instances that have been cache-enabled using one of the previous methods and dynamically loaded using the TemplateControl.LoadControl method. インスタンスControlCachePolicyは、 Init制御ライフサイクルの段階とPreRenderステージの間でのみ正常に操作できます。A ControlCachePolicy instance can be successfully manipulated only between the Init and PreRender stages of the control life cycle. フェーズのControlCachePolicy PreRender後にオブジェクトを変更した場合、ASP.NET は例外をスローします。これは、コントロールがレンダリングされた後に行われた変更はRender 、実際にはキャッシュ設定には影響しません (ステージ中にコントロールがキャッシュされるためです)。If you modify a ControlCachePolicy object after the PreRender phase, ASP.NET throws an exception, because any changes made after the control is rendered cannot actually affect cache settings (a control is cached during the Render stage). 最後に、ユーザーコントロールインスタンス (およびそのControlCachePolicyオブジェクト) は、実際にレンダリングされるときにプログラム操作でのみ使用できます。Finally, a user control instance (and therefore its ControlCachePolicy object) is only available for programmatic manipulation when it is actually rendered.

プロパティ

Cached Cached Cached Cached

ユーザー コントロールに対してフラグメント キャッシュが有効かどうかを示す値を取得または設定します。Gets or sets a value indicating whether fragment caching is enabled for the user control.

Dependency Dependency Dependency Dependency

キャッシュされたユーザー コントロール出力に関連付けられた CacheDependency クラスのインスタンスを取得または設定します。Gets or sets an instance of the CacheDependency class associated with the cached user control output.

Duration Duration Duration Duration

キャッシュされたアイテムが出力キャッシュ内に存続する時間を取得または設定します。Gets or sets the amount of time that cached items are to remain in the output cache.

ProviderName ProviderName ProviderName ProviderName

コントロール インスタンスに関連付けられている出力キャッシュ プロバイダー名を取得または設定します。Gets or sets the name of the output-cache provider that is associated with a control instance.

SupportsCaching SupportsCaching SupportsCaching SupportsCaching

ユーザー コントロールがキャッシュをサポートしているかどうかを示す値を取得します。Gets a value indicating whether the user control supports caching.

VaryByControl VaryByControl VaryByControl VaryByControl

キャッシュされた出力の変更に使用するコントロール ID のリストを取得または設定します。Gets or sets a list of control identifiers to vary the cached output by.

VaryByParams VaryByParams VaryByParams VaryByParams

キャッシュされた出力の変更に使用する GET パラメーター名または POST パラメーター名のリストを取得または設定します。Gets or sets a list of GET or POST parameter names to vary the cached output by.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
SetExpires(DateTime) SetExpires(DateTime) SetExpires(DateTime) SetExpires(DateTime)

ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、指定された日時にキャッシュ エントリの有効期限が切れるように指示します。Instructs the BasePartialCachingControl control that wraps the user control to expire the cache entry at the specified date and time.

SetSlidingExpiration(Boolean) SetSlidingExpiration(Boolean) SetSlidingExpiration(Boolean) SetSlidingExpiration(Boolean)

ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、ユーザー コントロールのキャッシュ エントリで変化する有効期限または絶対有効期限が使用されるように設定するよう指示します。Instructs the BasePartialCachingControl control that wraps the user control to set the user control's cache entry to use sliding or absolute expiration.

SetVaryByCustom(String) SetVaryByCustom(String) SetVaryByCustom(String) SetVaryByCustom(String)

出力キャッシュがユーザー コントロールを変更するために使用するカスタム文字列のリストを設定します。Sets a list of custom strings that the output cache will use to vary the user control.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください