ControlCachePolicy Classe

Definição

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 nomeado 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 Duration propriedade é examinada durante a inicialização da página e alterada usando os métodos e SetExpires os SetSlidingExpiration métodos 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 de Web Forms. Para executar este exemplo com êxito, verifique se o arquivo de controle de usuário (.ascx), seu arquivo code-behind (.cs ou .vb) e a página Web Forms que hospeda o controle do 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 inseri 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 nos quais você está trabalhando com BasePartialCachingControl instâncias habilitadas para cache usando um dos métodos anteriores e carregadas dinamicamente usando o TemplateControl.LoadControl método. Uma ControlCachePolicy instância pode ser manipulada com êxito somente entre os estágios e PreRender os Init estágios do ciclo de vida do controle. Se você modificar um ControlCachePolicy objeto após a PreRender fase, ASP.NET lançará uma exceção, pois as alterações feitas após a renderização do controle não poderão afetar as configurações de cache (um controle é armazenado em cache durante o Render 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 GET ou POST entre os quais variar a saída em cache.

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)

Aplica-se a

Confira também