ControlCachePolicy Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 cómo usar el SimpleControl
control de usuario de una página de Formularios 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 formularios 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 yPreRender
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 laPreRender
configuración de caché (un control se almacena en caché durante laRender
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 |
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) |