ControlCachePolicy Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje programový přístup k nastavení výstupní mezipaměti uživatelského ovládacího prvku ASP.NET.
public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
- Dědičnost
-
ControlCachePolicy
Příklady
Následující příklad kódu ukazuje, jak lze uživatelský ovládací prvek dynamicky načíst a manipulovat programově za běhu. Atribut PartialCachingAttribute se použije u uživatelského ovládacího prvku s názvem SimpleControl, což znamená, že uživatelský ovládací prvek je zabalen ovládacím PartialCachingControl prvku za běhu.
SimpleControl Nastavení ukládání do mezipaměti objektu lze programově manipulovat prostřednictvím přidruženého ControlCachePolicy objektu, který je k dispozici prostřednictvím odkazu na PartialCachingControl ovládací prvek, který ho zabalí. V tomto příkladu Duration je vlastnost zkoumána během inicializace stránky a změněna pomocí SetSlidingExpiration a SetExpires metod, pokud jsou splněny některé podmínky.
<%@ 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>
Následující příklad kódu ukazuje použití SimpleControl uživatelského ovládacího prvku ze stránky Webové formuláře. Pokud chcete tento příklad úspěšně spustit, ujistěte se, že soubor uživatelského ovládacího prvku (.ascx), jeho soubor s kódem (.cs nebo .vb) a stránka Webových formulářů, která je hostitelem uživatelského ovládacího prvku (.aspx), jsou ve stejném adresáři.
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>
Poznámky
Třídu ControlCachePolicy používají vývojáři ve scénářích programového řízení uživatelů k určení nastavení ukládání výstupu do mezipaměti pro uživatelské ovládací prvky (soubory .ascx). ASP.NET vloží uživatelské ovládací prvky do BasePartialCachingControl instance. Třída BasePartialCachingControl představuje uživatelský ovládací prvek, který má povolenou ukládání výstupu do mezipaměti. Když přistupujete k BasePartialCachingControl.CachePolicy vlastnosti PartialCachingControl ovládacího prvku, vždy obdržíte platný ControlCachePolicy objekt. Pokud však přistupujete k UserControl.CachePolicy vlastnosti UserControl ovládacího prvku, obdržíte platný ControlCachePolicy objekt pouze v případě, že uživatelský ovládací prvek je již zabalený ovládacím BasePartialCachingControl prvku. Pokud není zabalen, objekt vrácený vlastností vyvolá výjimky při pokusu o manipulaci s ním, ControlCachePolicy protože nemá přidruženou BasePartialCachingControl. Pokud chcete zjistit, jestli UserControl instance podporuje ukládání do mezipaměti bez generování výjimek, zkontrolujte SupportsCaching vlastnost.
ControlCachePolicy Použití třídy je jedním z několika způsobů, jak povolit ukládání výstupu do mezipaměti. Následující seznam popisuje metody, které můžete použít k povolení ukládání výstupu do mezipaměti:
Direktiva
@ OutputCacheslouží k povolení ukládání výstupu do mezipaměti v deklarativních scénářích.Pomocí atributu PartialCachingAttribute můžete povolit ukládání do mezipaměti pro uživatelský ovládací prvek v souboru kódu za kódem.
ControlCachePolicy Pomocí třídy můžete určit nastavení mezipaměti v programových scénářích, ve kterých pracujete s BasePartialCachingControl instancemi, které byly povoleny do mezipaměti pomocí jedné z předchozích metod a dynamicky načteny pomocí TemplateControl.LoadControl metody. Instance ControlCachePolicy může být úspěšně manipulována pouze mezi
InitPreRenderfázemi životního cyklu řízení. Pokud upravíte ControlCachePolicy objekt poPreRenderfázi, ASP.NET vyvolá výjimku, protože všechny změny provedené po vykreslení ovládacího prvku nemohou ve skutečnosti ovlivnit nastavení mezipaměti (ovládací prvek je uložen v mezipaměti běhemRenderfáze). A konečně, instance uživatelského ovládacího prvku (a proto jeho ControlCachePolicy objekt) je k dispozici pouze pro programovou manipulaci, když je skutečně vykreslena.
Vlastnosti
| Name | Description |
|---|---|
| Cached |
Získá nebo nastaví hodnotu určující, zda je pro uživatelský ovládací prvek povolen ukládání fragmentu do mezipaměti. |
| Dependency |
Získá nebo nastaví instanci CacheDependency třídy přidružené k výstupu uživatelského ovládacího prvku v mezipaměti. |
| Duration |
Získá nebo nastaví dobu, po kterou položky uložené v mezipaměti zůstanou ve výstupní mezipaměti. |
| ProviderName |
Získá nebo nastaví název zprostředkovatele výstupní mezipaměti, který je přidružen k instanci ovládacího prvku. |
| SupportsCaching |
Získá hodnotu určující, zda uživatelský ovládací prvek podporuje ukládání do mezipaměti. |
| VaryByControl |
Získá nebo nastaví seznam identifikátorů ovládacích prvků, aby se liší výstup v mezipaměti podle. |
| VaryByParams |
Získá nebo nastaví seznam |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| SetExpires(DateTime) |
Dá pokyn ovládacímu BasePartialCachingControl prvku, který zabalí uživatelský ovládací prvek tak, aby vypršela platnost položky mezipaměti v zadaném datu a čase. |
| SetSlidingExpiration(Boolean) |
Dá pokyn ovládacímu BasePartialCachingControl prvku, který zabalí uživatelský ovládací prvek, aby nastavil položku mezipaměti uživatelského ovládacího prvku tak, aby používal posuvné nebo absolutní vypršení platnosti. |
| SetVaryByCustom(String) |
Nastaví seznam vlastních řetězců, které bude výstupní mezipaměť používat k různým uživatelským ovládacím prvkům. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |