ControlCachePolicy Clase

Definición

Proporciona acceso mediante programación a la configuración de la caché de resultados de un control de usuario de ASP.NET.

public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
Herencia
ControlCachePolicy

Ejemplos

En el ejemplo de código siguiente se muestra cómo un control de usuario se puede cargar dinámicamente y manipular mediante programación en tiempo de ejecución. El PartialCachingAttribute atributo se aplica a un control de usuario denominado SimpleControl, lo que significa que el control de usuario se ajusta mediante un PartialCachingControl control en tiempo de ejecución. La SimpleControl configuración de almacenamiento en caché del objeto se puede manipular mediante programación a través de su objeto asociado ControlCachePolicy , que está disponible a través de una referencia al PartialCachingControl control que lo encapsula. En este ejemplo, la propiedad se examina durante la Duration inicialización de páginas y se cambia mediante los SetSlidingExpiration métodos y SetExpires si se cumplen algunas condiciones.

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

En el ejemplo de código siguiente se muestra el uso del SimpleControl control de usuario desde una página de Web Forms. Para ejecutar este ejemplo correctamente, asegúrese de que el archivo de control de usuario (.ascx), su archivo de código subyacente (.cs o .vb) y la página Web Forms que hospeda el control de usuario (.aspx) se encuentran en el mismo directorio.

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>

Comentarios

Los desarrolladores usan la ControlCachePolicy clase en escenarios de control de usuario mediante programación para especificar la configuración de almacenamiento en caché de salida para los controles de usuario (archivos .ascx). ASP.NET inserta controles de usuario dentro de una BasePartialCachingControl instancia. La BasePartialCachingControl clase representa un control de usuario que tiene habilitado el almacenamiento en caché de salida. Al acceder a la BasePartialCachingControl.CachePolicy propiedad de un PartialCachingControl control, siempre recibirá un objeto válido ControlCachePolicy . Sin embargo, si tiene acceso a la UserControl.CachePolicy propiedad de un UserControl control, recibirá un objeto válido ControlCachePolicy solo si el control de usuario ya está encapsulado por un BasePartialCachingControl control. Si no está encapsulado, el ControlCachePolicy objeto devuelto por la propiedad producirá excepciones al intentar manipularlo porque no tiene asociado BasePartialCachingControl. Para determinar si una UserControl instancia admite el almacenamiento en caché sin generar excepciones, inspeccione la SupportsCaching propiedad .

El uso de la clase es una de varias maneras de habilitar el ControlCachePolicy almacenamiento en caché de salida. En la lista siguiente se describen los métodos que puede usar para habilitar el almacenamiento en caché de salida:

  • Use la directiva para habilitar el @ OutputCache almacenamiento en caché de salida en escenarios declarativos.

  • Use el atributo para habilitar el PartialCachingAttribute almacenamiento en caché para un control de usuario en un archivo de código subyacente.

  • Use la clase para especificar la ControlCachePolicy configuración de caché en escenarios mediante programación en los que está trabajando con BasePartialCachingControl instancias habilitadas para la caché mediante uno de los métodos anteriores y cargado dinámicamente mediante el TemplateControl.LoadControl método . Una ControlCachePolicy instancia solo se puede manipular correctamente entre las Init fases y PreRender del ciclo de vida del control. Si modifica un ControlCachePolicy objeto después de la fase, ASP.NET produce una excepción, ya que los cambios realizados después de representar el control no pueden afectar realmente a la PreRender configuración de caché (un control se almacena en caché durante la Render fase). Por último, una instancia de control de usuario (y, por lo tanto, su ControlCachePolicy objeto) solo está disponible para la manipulación mediante programación cuando se representa realmente.

Propiedades

Cached

Obtiene o establece un valor que indica si el almacenamiento en caché de fragmentos está habilitado para el control de usuario.

Dependency

Obtiene o establece una instancia de la clase CacheDependency asociada a los resultados del control de usuario almacenados en caché.

Duration

Obtiene o establece el tiempo que deben permanecer en la caché de resultados los elementos almacenados en caché.

ProviderName

Obtiene o establece el nombre del proveedor de caché de resultados que está asociado a una instancia de control.

SupportsCaching

Obtiene un valor que indica si el control de usuario admite el almacenamiento en caché.

VaryByControl

Obtiene o establece una lista de identificadores de control para modificar el resultado almacenado en memoria caché.

VaryByParams

Obtiene o establece una lista de nombres de parámetro GET o POST para modificar el resultado almacenado en memoria caché.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
SetExpires(DateTime)

Indica a la clase BasePartialCachingControl que contiene el control de usuario que la entrada en memoria caché expira en la fecha y hora especificadas.

SetSlidingExpiration(Boolean)

Indica al control BasePartialCachingControl que contiene el control de usuario que se configure la entrada en caché del control de usuario para utilizarse una expiración variable o absoluta.

SetVaryByCustom(String)

Establece una lista de cadenas personalizadas que utilizará la caché de resultados para modificar el control de usuario.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también