ControlCachePolicy Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece acesso programático às configurações de cache de saída de um controle usuário ASP.NET.
public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
- Herança
-
ControlCachePolicy
Exemplos
O exemplo de código a seguir demonstra como um controle de usuário pode ser carregado dinamicamente e manipulado programaticamente em tempo de execução. O PartialCachingAttribute atributo é aplicado a um controle de usuário chamado SimpleControl
, o que significa que o controle do usuário é encapsulado por um PartialCachingControl controle em tempo de execução. As SimpleControl
configurações de cache do objeto podem ser manipuladas programaticamente por meio de seu objeto associado ControlCachePolicy , que está disponível por meio de uma referência ao controle que o PartialCachingControl encapsula. Neste exemplo, a propriedade é examinada durante a Duration inicialização da página e alterada usando os SetSlidingExpiration métodos e SetExpires se algumas condições forem atendidas.
<%@ 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>
O exemplo de código a seguir demonstra o uso do SimpleControl
controle de usuário de uma página do Web Forms. Para executar este exemplo com êxito, verifique se o arquivo de controle do usuário (.ascx), seu arquivo code-behind (.cs ou .vb) e a página web forms que hospeda o controle de usuário (.aspx) estão no mesmo diretório.
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>
Comentários
A ControlCachePolicy classe é usada por desenvolvedores em cenários programáticos de controle de usuário para especificar as configurações de cache de saída para controles de usuário (arquivos.ascx). ASP.NET insira controles de usuário em uma BasePartialCachingControl instância. A BasePartialCachingControl classe representa um controle de usuário que tem o cache de saída habilitado. Ao acessar a BasePartialCachingControl.CachePolicy propriedade de um PartialCachingControl controle, você sempre receberá um objeto válido ControlCachePolicy . No entanto, se você acessar a UserControl.CachePolicy propriedade de um UserControl controle, receberá um objeto válido ControlCachePolicy somente se o controle de usuário já estiver encapsulado por um BasePartialCachingControl controle. Se não estiver encapsulado, o ControlCachePolicy objeto retornado pela propriedade gerará exceções quando você tentar manipulá-lo porque ele não tem um associado BasePartialCachingControl. Para determinar se uma UserControl instância dá suporte ao cache sem gerar exceções, inspecione a SupportsCaching propriedade .
Usar a ControlCachePolicy classe é uma das várias maneiras de habilitar o cache de saída. A lista a seguir descreve os métodos que você pode usar para habilitar o cache de saída:
Use a diretiva para habilitar o
@ OutputCache
cache de saída em cenários declarativos.Use o atributo para habilitar o PartialCachingAttribute cache para um controle de usuário em um arquivo code-behind.
Use a ControlCachePolicy classe para especificar as configurações de cache em cenários programáticos em que você está trabalhando com BasePartialCachingControl instâncias que foram habilitadas para cache usando um dos métodos anteriores e carregadas dinamicamente usando o TemplateControl.LoadControl método . Uma ControlCachePolicy instância só pode ser manipulada com êxito entre os
Init
estágios ePreRender
do ciclo de vida do controle. Se você modificar um ControlCachePolicy objeto após aPreRender
fase, ASP.NET gerará uma exceção, pois as alterações feitas após a renderização do controle não poderão realmente afetar as configurações de cache (um controle é armazenado em cache durante oRender
estágio). Por fim, uma instância de controle de usuário (e, portanto, seu ControlCachePolicy objeto) só está disponível para manipulação programática quando ela é realmente renderizada.
Propriedades
Cached |
Obtém ou define um valor que indica se o cache de fragmento está habilitado para o controle de usuário. |
Dependency |
Obtém ou define uma instância da classe CacheDependency associada à saída do controle de usuário em cache. |
Duration |
Obtém ou define a quantidade de tempo que os itens em cache devem permanecer no cache de saída. |
ProviderName |
Obtém ou define o nome do provedor de cache de saída que está associado uma instância do controle. |
SupportsCaching |
Obtém um valor que indica se o controle de usuário dá suporte a cache. |
VaryByControl |
Obtém ou define uma lista de identificadores de controle entre os quais variar a saída em cache. |
VaryByParams |
Obtém ou define uma lista de nomes de parâmetro |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
SetExpires(DateTime) |
Instrui o controle BasePartialCachingControl que encapsula o controle de usuário para expirar a entrada de cache na data e hora especificadas. |
SetSlidingExpiration(Boolean) |
Instrui o BasePartialCachingControl controle que encapsula o controle de usuário para definir a entrada de cache do controle de usuário para usar a expiração deslizante ou absoluta. |
SetVaryByCustom(String) |
Define uma lista de cadeias de caracteres personalizadas que o cache de saída usará para variar o controle de usuário. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |