Sdílet prostřednictvím


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 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 @ OutputCache slouží 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 InitPreRender fázemi životního cyklu řízení. Pokud upravíte ControlCachePolicy objekt po PreRender fá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ěhem Render fá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 GET nebo POST názvy parametrů, aby se liší výstup v mezipaměti podle.

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)

Platí pro

Viz také