ControlCachePolicy Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ger programmatisk åtkomst till en ASP.NET användarkontrolls cacheinställningar för utdata.
public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
- Arv
-
ControlCachePolicy
Exempel
Följande kodexempel visar hur en användarkontroll kan läsas in dynamiskt och manipuleras programmatiskt vid körning. Attributet PartialCachingAttribute tillämpas på en användarkontroll med namnet SimpleControl, vilket innebär att användarkontrollen omsluts av en PartialCachingControl kontroll vid körning. Objektets SimpleControl cachelagringsinställningar kan manipuleras programmatiskt via dess associerade ControlCachePolicy objekt, vilket är tillgängligt via en referens till kontrollen PartialCachingControl som omsluter det. I det här exemplet Duration granskas egenskapen under sidinitieringen och ändras med hjälp av SetSlidingExpiration metoderna och SetExpires om vissa villkor uppfylls.
<%@ 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>
Följande kodexempel visar hur du använder SimpleControl användarkontrollen från en webbformulärsida. Om du vill köra det här exemplet kontrollerar du att användarkontrollfilen (.ascx), dess kod-bakom-fil (.cs eller .vb) och sidan Webbformulär som är värd för användarkontrollen (.aspx) finns i samma katalog.
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>
Kommentarer
Klassen ControlCachePolicy används av utvecklare i programmatiska användarkontrollscenarier för att ange cachelagringsinställningar för utdata för användarkontroller (.ascx-filer). ASP.NET bäddar in användarkontroller i en BasePartialCachingControl-instans. Klassen BasePartialCachingControl representerar en användarkontroll som har cachelagring av utdata aktiverat. När du kommer åt egenskapen för BasePartialCachingControl.CachePolicy en PartialCachingControl kontroll får du alltid ett giltigt ControlCachePolicy objekt. Men om du kommer åt UserControl.CachePolicy egenskapen för en UserControl kontroll får du bara ett giltigt ControlCachePolicy objekt om användarkontrollen redan är omsluten av en BasePartialCachingControl kontroll. Om det inte är omslutet ControlCachePolicy utlöser objektet som returneras av egenskapen undantag när du försöker ändra det eftersom det inte har någon associerad BasePartialCachingControl. Om du vill ta reda på om en UserControl instans stöder cachelagring utan att generera undantag kontrollerar du SupportsCaching egenskapen.
ControlCachePolicy Att använda klassen är ett av flera sätt att aktivera cachelagring av utdata. I följande lista beskrivs metoder som du kan använda för att aktivera cachelagring av utdata:
Använd direktivet
@ OutputCacheför att aktivera cachelagring av utdata i deklarativa scenarier.PartialCachingAttribute Använd attributet för att aktivera cachelagring för en användarkontroll i en kod bakom-fil.
ControlCachePolicy Använd klassen för att ange cacheinställningar i programmatiska scenarier där du arbetar med BasePartialCachingControl instanser som har cacheaktiverats med någon av de tidigare metoderna och dynamiskt lästs in med hjälp av TemplateControl.LoadControl metoden. En ControlCachePolicy instans kan endast manipuleras mellan
Initkontrolllivscykelns faser ochPreRenderfaser. Om du ändrar ett ControlCachePolicy objekt efter fasenPreRendergenererar ASP.NET ett undantag, eftersom ändringar som görs efter att kontrollen har renderats inte kan påverka cacheinställningarna (en kontroll cachelagras underRender-fasen). Slutligen är en instans av användarkontroll (och därmed dess ControlCachePolicy objekt) endast tillgänglig för programmatisk manipulering när den faktiskt återges.
Egenskaper
| Name | Description |
|---|---|
| Cached |
Hämtar eller anger ett värde som anger om fragmentcachelagring är aktiverat för användarkontrollen. |
| Dependency |
Hämtar eller anger en instans av klassen CacheDependency som är associerad med cachelagrade användarkontrollutdata. |
| Duration |
Hämtar eller anger hur lång tid cachelagrade objekt ska finnas kvar i utdatacachen. |
| ProviderName |
Hämtar eller anger namnet på utdatacacheprovidern som är associerad med en kontrollinstans. |
| SupportsCaching |
Hämtar ett värde som anger om användarkontrollen stöder cachelagring. |
| VaryByControl |
Hämtar eller anger en lista över kontrollidentifierare som ska variera cachelagrade utdata efter. |
| VaryByParams |
Hämtar eller anger en lista med |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| SetExpires(DateTime) |
Instruerar kontrollen BasePartialCachingControl som omsluter användarkontrollen att förfalla cacheposten vid angivet datum och tid. |
| SetSlidingExpiration(Boolean) |
Instruerar kontrollen BasePartialCachingControl som omsluter användarkontrollen att ange att användarkontrollens cachepost ska använda glidande eller absolut förfallotid. |
| SetVaryByCustom(String) |
Anger en lista över anpassade strängar som utdatacachen ska använda för att variera användarkontrollen. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |