ControlCachePolicy クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ASP.NET ユーザー コントロールの出力キャッシュ設定に対する、プログラムによるアクセス手段を提供します。
public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
- 継承
-
ControlCachePolicy
例
次のコード例では、実行時にユーザー コントロールを動的に読み込み、プログラムで操作する方法を示します。 属性は PartialCachingAttribute 、 という名前 SimpleControl
のユーザー コントロールに適用されます。つまり、実行時にユーザー コントロールがコントロールによって PartialCachingControl ラップされます。 オブジェクトのキャッシュ設定は SimpleControl
、関連付けられている ControlCachePolicy オブジェクトを通じてプログラムで操作できます。これは、ラップするコントロールへの PartialCachingControl 参照を通じて使用できます。 この例では、 Duration プロパティはページの初期化中に調べられ、一部の条件が満たされた場合は SetSlidingExpiration メソッドと SetExpires メソッドを使用して変更されます。
<%@ 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
ユーザー コントロールを使用する方法を示します。 この例を正常に実行するには、ユーザー コントロール ファイル (.ascx)、分離コード ファイル (.csまたは.vb)、およびユーザー コントロール (.aspx) をホストする Web フォーム ページが同じディレクトリにあることを確認します。
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 ファイル) の出力キャッシュ設定を指定するために使用されます。 ASP.NET は、インスタンス内にユーザー コントロールを BasePartialCachingControl 埋め込みます。 クラスは BasePartialCachingControl 、出力キャッシュが有効になっているユーザー コントロールを表します。 コントロールの PartialCachingControl プロパティにBasePartialCachingControl.CachePolicyアクセスすると、常に有効な ControlCachePolicy オブジェクトを受け取ります。 ただし、コントロールの プロパティにUserControl.CachePolicyアクセスする場合は、ユーザー コントロールが既にコントロールによってラップされている場合にのみ、有効なControlCachePolicyオブジェクトをBasePartialCachingControl受け取UserControlります。 ラップされていない場合、 ControlCachePolicy プロパティによって返されるオブジェクトは、 が関連付けられていない BasePartialCachingControlため、操作しようとすると例外がスローされます。 インスタンスが例外を UserControl 生成せずにキャッシュをサポートしているかどうかを判断するには、 プロパティを SupportsCaching 調べます。
クラスの ControlCachePolicy 使用は、出力キャッシュを有効にできるいくつかの方法の 1 つです。 次の一覧では、出力キャッシュを有効にするために使用できるメソッドについて説明します。
宣言型の
@ OutputCache
シナリオで出力キャッシュを有効にするには、 ディレクティブを使用します。分離コード ファイル内の PartialCachingAttribute ユーザー コントロールのキャッシュを有効にするには、 属性を使用します。
クラスを ControlCachePolicy 使用して、前のいずれかのメソッドを使用してキャッシュが有効になっているインスタンスを BasePartialCachingControl 操作し、 メソッドを使用して動的に読み込むプログラムのシナリオでキャッシュ設定を TemplateControl.LoadControl 指定します。 インスタンスは ControlCachePolicy 、コントロール のライフ サイクルの
Init
ステージとPreRender
ステージの間でのみ正常に操作できます。 フェーズの後にPreRender
オブジェクトをControlCachePolicy変更した場合、ASP.NET は例外をスローします。これは、コントロールのレンダリング後に行われた変更が実際にはキャッシュ設定に影響を与えないためです (コントロールはステージ中にRender
キャッシュされます)。 最後に、ユーザー コントロール インスタンス (およびその ControlCachePolicy オブジェクト) は、実際にレンダリングされた場合にのみプログラムによる操作に使用できます。
プロパティ
Cached |
ユーザー コントロールに対してフラグメント キャッシュが有効かどうかを示す値を取得または設定します。 |
Dependency |
キャッシュされたユーザー コントロール出力に関連付けられた CacheDependency クラスのインスタンスを取得または設定します。 |
Duration |
キャッシュされたアイテムが出力キャッシュ内に存続する時間を取得または設定します。 |
ProviderName |
コントロール インスタンスに関連付けられている出力キャッシュ プロバイダー名を取得または設定します。 |
SupportsCaching |
ユーザー コントロールがキャッシュをサポートしているかどうかを示す値を取得します。 |
VaryByControl |
キャッシュされた出力の変更に使用するコントロール ID のリストを取得または設定します。 |
VaryByParams |
キャッシュされた出力の変更に使用する |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
SetExpires(DateTime) |
ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、指定された日時にキャッシュ エントリの有効期限が切れるように指示します。 |
SetSlidingExpiration(Boolean) |
ユーザー コントロールをラップする BasePartialCachingControl コントロールに対して、ユーザー コントロールのキャッシュ エントリで変化する有効期限または絶対有効期限が使用されるように設定するよう指示します。 |
SetVaryByCustom(String) |
出力キャッシュがユーザー コントロールを変更するために使用するカスタム文字列のリストを設定します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET