ControlCachePolicy Klas

Definitie

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 @ OutputCache instructie 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 Init en PreRender fasen van de levenscyclus van de controle. Als u een ControlCachePolicy-object wijzigt na de fase PreRender, 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 de Render-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 GET of parameternamen opgehaald of POST ingesteld om de uitvoer in de cache te variëren.

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)

Van toepassing op

Zie ook