ControlCachePolicy Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece acesso programático às definições de cache de saída de um controlo de utilizador 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 seguinte demonstra como um controlo do utilizador pode ser carregado dinamicamente e manipulado programaticamente em tempo de execução. O PartialCachingAttribute atributo é aplicado a um controlo de utilizador chamado SimpleControl, o que significa que o controlo de utilizador é envolto por um PartialCachingControl controlo em tempo de execução. As SimpleControl definições de cache do objeto podem ser manipuladas programaticamente através do objeto associado ControlCachePolicy , que está disponível através de uma referência ao PartialCachingControl controlo que o envolve. Neste exemplo, a Duration propriedade é examinada durante a inicialização da página e alterada usando os SetSlidingExpiration métodos e SetExpires se algumas condições forem cumpridas.
<%@ 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 seguinte demonstra o uso do controlo SimpleControl do utilizador a partir de uma página Web Forms. Para executar este exemplo com sucesso, certifique-se de que o ficheiro de controlo do utilizador (.ascx), o seu ficheiro de código por trás (.cs ou .vb) e a página Web Forms que aloja o controlo do utilizador (.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>
Observações
A ControlCachePolicy classe é usada por programadores em cenários programáticos de controlo de utilizador para especificar definições de cache de saída para controlos de utilizador (ficheiros .ascx). ASP.NET incorpora os controlos do utilizador numa instância BasePartialCachingControl. A BasePartialCachingControl classe representa um controlo de utilizador que tem a cache de saída ativada. Quando acede à BasePartialCachingControl.CachePolicy propriedade de um PartialCachingControl controlo, receberá sempre um objeto válido ControlCachePolicy . No entanto, se aceder à UserControl.CachePolicy propriedade de um UserControl controlo, só recebe um objeto válido ControlCachePolicy se o controlo do utilizador já estiver envolto por um BasePartialCachingControl controlo. Se não estiver encapsulado, o ControlCachePolicy objeto devolvido pela propriedade lançará exceções quando tentar manipulá-lo porque não tem um elemento associado BasePartialCachingControl. Para determinar se uma UserControl instância suporta cache sem gerar exceções, inspecione a SupportsCaching propriedade.
Usar a ControlCachePolicy classe é uma das várias formas de ativar o cache de saída. A lista seguinte descreve métodos que pode usar para permitir a cache de saída:
Use a
@ OutputCachediretiva para permitir a cache de saída em cenários declarativos.Use o PartialCachingAttribute atributo para ativar a cache de um controlo de utilizador num ficheiro code-behind.
Use a ControlCachePolicy classe para especificar definições de cache em cenários programáticos em que esteja a trabalhar com BasePartialCachingControl instâncias que tenham sido ativadas em cache usando um dos métodos anteriores e carregadas dinamicamente com esse TemplateControl.LoadControl método. Uma ControlCachePolicy instância só pode ser manipulada com sucesso entre as
Initfases ePreRenderdo ciclo de vida do controlo. Se modificar um objeto ControlCachePolicy após a fasePreRender, ASP.NET lança uma exceção, porque quaisquer alterações feitas após o renderizado do controlo não podem realmente afetar as definições de cache (um controlo é armazenado em cache durante a faseRender). Finalmente, uma instância de controlo do utilizador (e, portanto, o seu ControlCachePolicy objeto) só está disponível para manipulação programática quando é realmente renderizada.
Propriedades
| Name | Description |
|---|---|
| Cached |
Obtém ou define um valor que indica se a cache de fragmentos está ativada para o controlo do utilizador. |
| Dependency |
Obtém ou define uma instância da CacheDependency classe associada à saída de controlo do utilizador em cache. |
| Duration |
Obtém ou define o tempo que os itens em cache devem permanecer na cache de saída. |
| ProviderName |
Obtém ou define o nome do fornecedor de cache de saída associado a uma instância de controlo. |
| SupportsCaching |
Recebe um valor que indica se o controlo do utilizador suporta cache. |
| VaryByControl |
Obtém ou define uma lista de identificadores de controlo para variar a saída em cache. |
| VaryByParams |
Obtém ou define uma lista de |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| SetExpires(DateTime) |
Instrui o BasePartialCachingControl controlo que envolve o controlo do utilizador a expirar a entrada da cache na data e hora especificadas. |
| SetSlidingExpiration(Boolean) |
Instrui o BasePartialCachingControl controlo que envolve o controlo de utilizador a definir a entrada de cache do controlo de utilizador para usar expiração deslizante ou absoluta. |
| SetVaryByCustom(String) |
Define uma lista de strings personalizadas que a cache de saída usará para variar o controlo do utilizador. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |