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 caché de salida de un control de usuario 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 se puede cargar un control de usuario de forma dinámica y manipulada 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ágina 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 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) están 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 de . 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 accede 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á ajustado, 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 las 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
@ OutputCachealmacenamiento 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 se trabaja 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
Initfases yPreRenderdel ciclo de vida de control. Si modifica un ControlCachePolicy objeto después de laPreRenderfase, ASP.NET produce una excepción, ya que los cambios realizados después de representar el control no pueden afectar realmente a la configuración de caché (un control se almacena en caché durante laRenderfase). 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
| Nombre | Description |
|---|---|
| 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 CacheDependency clase asociada a la salida del control de usuario almacenado en caché. |
| Duration |
Obtiene o establece la cantidad de tiempo que los elementos almacenados en caché deben permanecer en la memoria caché de salida. |
| ProviderName |
Obtiene o establece el nombre del proveedor de caché de salida 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 variar la salida almacenada en caché. |
| VaryByParams |
Obtiene o establece una lista de nombres de |
Métodos
| Nombre | Description |
|---|---|
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| SetExpires(DateTime) |
Indica al BasePartialCachingControl control que encapsula el control de usuario para que expire la entrada de caché en la fecha y hora especificadas. |
| SetSlidingExpiration(Boolean) |
Indica al BasePartialCachingControl control que encapsula el control de usuario para establecer la entrada de caché del control de usuario para usar la expiración deslizante o absoluta. |
| SetVaryByCustom(String) |
Establece una lista de cadenas personalizadas que usará la caché de salida para variar el control de usuario. |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |