ControlCachePolicy Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt programmatische toegang tot de uitvoercache-instellingen van een ASP.NET gebruikersbeheer.
public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
- Overname
-
ControlCachePolicy
Voorbeelden
In het volgende codevoorbeeld ziet u hoe een gebruikersbeheer dynamisch kan worden geladen en programmatisch kan worden gemanipuleerd tijdens runtime. Het PartialCachingAttribute kenmerk wordt toegepast op een gebruikersbeheer met de naam SimpleControl, wat betekent dat het gebruikersbeheer wordt verpakt door een PartialCachingControl besturingselement tijdens runtime. De cache-instellingen van het SimpleControl object kunnen programmatisch worden bewerkt via het bijbehorende ControlCachePolicy object, dat beschikbaar is via een verwijzing naar het PartialCachingControl besturingselement waarmee het wordt verpakt. In dit voorbeeld wordt de eigenschap onderzocht tijdens de initialisatie van de Duration pagina en gewijzigd met behulp van de SetSlidingExpiration en SetExpires methoden als aan bepaalde voorwaarden wordt voldaan.
<%@ 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>
In het volgende codevoorbeeld ziet u hoe u het SimpleControl gebruikersbeheer gebruikt vanaf een webpagina met webformulieren. Als u dit voorbeeld wilt uitvoeren, moet u ervoor zorgen dat het gebruikersbesturingselementbestand (.ascx), het bijbehorende code-behind-bestand (.cs of .vb) en de webpagina met webformulieren die als host fungeert voor het gebruikersbesturingselement (.aspx) zich in dezelfde map bevinden.
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>
Opmerkingen
De ControlCachePolicy klasse wordt gebruikt door ontwikkelaars in programmatische scenario's voor gebruikersbeheer om uitvoercaching-instellingen voor gebruikersbesturingselementen (.ascx-bestanden) op te geven. ASP.NET gebruikersbesturingselementen insluit in een exemplaar van BasePartialCachingControl. De BasePartialCachingControl klasse vertegenwoordigt een gebruikersbeheer waarvoor uitvoercache is ingeschakeld. Wanneer u de eigenschap van een besturingselement opentBasePartialCachingControl.CachePolicy, ontvangt u altijd een geldig ControlCachePolicy object.PartialCachingControl Als u echter de UserControl.CachePolicy eigenschap van een UserControl besturingselement opent, ontvangt u alleen een geldig ControlCachePolicy object als het gebruikersbesturingselement al is verpakt door een BasePartialCachingControl besturingselement. Als het object niet is verpakt, genereert het ControlCachePolicy object dat door de eigenschap wordt geretourneerd uitzonderingen wanneer u het probeert te manipuleren omdat het geen gekoppelde BasePartialCachingControleigenschap heeft. Controleer de SupportsCaching eigenschap om te bepalen of een UserControl exemplaar caching ondersteunt zonder uitzonderingen te genereren.
Het gebruik van de ControlCachePolicy klasse is een van de verschillende manieren waarop u uitvoercache kunt inschakelen. In de volgende lijst worden methoden beschreven die u kunt gebruiken om uitvoercache in te schakelen:
Gebruik de
@ OutputCacheinstructie om uitvoercaching in te schakelen in declaratieve scenario's.Gebruik het PartialCachingAttribute kenmerk om caching in te schakelen voor een gebruikersbesturingselement in een code-behind-bestand.
Gebruik de ControlCachePolicy klasse om cache-instellingen op te geven in programmatische scenario's waarin u werkt met BasePartialCachingControl exemplaren waarvoor cache is ingeschakeld met behulp van een van de vorige methoden en dynamisch geladen met behulp van de TemplateControl.LoadControl methode. Een ControlCachePolicy exemplaar kan alleen worden gemanipuleerd tussen de
InitenPreRenderfasen van de levenscyclus van de controle. Als u een ControlCachePolicy-object wijzigt na de fasePreRender, genereert ASP.NET een uitzondering, omdat wijzigingen die zijn aangebracht nadat het besturingselement is weergegeven, geen invloed kunnen hebben op de cache-instellingen (een besturingselement wordt in de cache opgeslagen tijdens deRender-fase). Ten slotte is een exemplaar van gebruikersbeheer (en daarom het ControlCachePolicy object) alleen beschikbaar voor programmatische manipulatie wanneer het daadwerkelijk wordt weergegeven.
Eigenschappen
| Name | Description |
|---|---|
| Cached |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of fragmentcaching is ingeschakeld voor het gebruikersbeheer. |
| Dependency |
Hiermee haalt u een exemplaar op van de CacheDependency klasse die is gekoppeld aan de uitvoer van gebruikersbeheer in de cache. |
| Duration |
Hiermee wordt de hoeveelheid tijd opgehaald of ingesteld die items in de cache moeten blijven staan in de uitvoercache. |
| ProviderName |
Hiermee haalt u de naam op van de uitvoercacheprovider die is gekoppeld aan een besturingselementexemplaar of stelt u deze in. |
| SupportsCaching |
Hiermee wordt een waarde opgehaald die aangeeft of het gebruikersbeheer caching ondersteunt. |
| VaryByControl |
Hiermee wordt een lijst met besturings-id's opgehaald of ingesteld om de uitvoer in de cache te variëren. |
| VaryByParams |
Hiermee wordt een lijst met |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| SetExpires(DateTime) |
Hiermee wordt het BasePartialCachingControl besturingselement geïnstrueerd dat het besturingselement van de gebruiker de cachevermelding op de opgegeven datum en tijd laat verlopen. |
| SetSlidingExpiration(Boolean) |
Hiermee wordt het BasePartialCachingControl besturingselement geïnstrueerd dat het besturingselement van de gebruiker verpakt om de cachevermelding van het gebruikersbeheer in te stellen voor het gebruik van een schuif- of absolute vervaldatum. |
| SetVaryByCustom(String) |
Hiermee stelt u een lijst met aangepaste tekenreeksen in die door de uitvoercache worden gebruikt om het gebruikersbeheer te variëren. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |