ControlCachePolicy Třída

Definice

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 na uživatelský ovládací prvek s názvem SimpleControl, což znamená, že uživatelský ovládací prvek je zabalený ovládacím prostředkem PartialCachingControl za běhu. Nastavení SimpleControl ukládání objektu do mezipaměti lze programově manipulovat prostřednictvím přidruženého ControlCachePolicy objektu, který je k dispozici prostřednictvím odkazu na ovládací prvek, který ho PartialCachingControl zabalí. V tomto příkladu Duration je vlastnost zkoumána během inicializace stránky a změněna pomocí SetSlidingExpiration metod a SetExpires , 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 Web Forms. 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 na pozadí (.cs nebo .vb) a stránka Web Forms, 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 v programových scénářích uživatelského řízení 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á povolené ukládání výstupu do mezipaměti. Při přístupu 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í prvek BasePartialCachingControl . Pokud není zabalen, ControlCachePolicy objekt vrácený vlastností vyvolá při pokusu o manipulaci s objektem výjimky, protože nemá přidružený BasePartialCachingControlobjekt . Chcete-li zjistit, zda 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:

  • Direktivu použijte @ OutputCache k povolení ukládání výstupu do mezipaměti v deklarativních scénářích.

  • Pomocí atributu PartialCachingAttribute povolíte ukládání uživatelského ovládacího prvku do mezipaměti v souboru s kódem na pozadí.

  • ControlCachePolicy Pomocí třídy určete nastavení mezipaměti v programových scénářích, ve kterých pracujete s instancemiBasePartialCachingControl, které byly povoleny mezipaměti pomocí některé 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 Init fázemi a PreRender životního cyklu řízení. Pokud změníte ControlCachePolicy objekt po PreRender fázi, ASP.NET vyvolá výjimku, protože 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ěhem Render fáze). A konečně, instance uživatelského ovládacího prvku (a tedy její ControlCachePolicy objekt) je k dispozici pro programovou manipulaci pouze v případě, že je skutečně vykreslena.

Vlastnosti

Cached

Získá nebo nastaví hodnotu označující, zda je ukládání fragmentů do mezipaměti povoleno pro uživatelský ovládací prvek.

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 mají položky v mezipaměti zůstat 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 označ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ů pro různé výstupy v mezipaměti podle.

VaryByParams

Získá nebo nastaví seznam GET nebo POST názvy parametrů pro různé výstupy v mezipaměti podle.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
SetExpires(DateTime)

Dá ovládacímu BasePartialCachingControl prvku, který zabalí uživatelský ovládací prvek, aby v zadaném datu a čase vypršela platnost položky mezipaměti.

SetSlidingExpiration(Boolean)

Dá 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žívala posuvné nebo absolutní vypršení platnosti.

SetVaryByCustom(String)

Nastaví seznam vlastních řetězců, které bude výstupní mezipaměť používat k odlišný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)

Platí pro

Viz také