Udostępnij za pośrednictwem


ControlCachePolicy Klasa

Definicja

Zapewnia programowy dostęp do ustawień wyjściowej pamięci podręcznej kontrolki użytkownika ASP.NET.

public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
Dziedziczenie
ControlCachePolicy

Przykłady

Poniższy przykład kodu pokazuje, jak kontrolka użytkownika może być ładowana dynamicznie i manipulowana programowo w czasie wykonywania. Atrybut PartialCachingAttribute jest stosowany do kontrolki użytkownika o nazwie SimpleControl, co oznacza, że kontrolka użytkownika jest opakowana przez kontrolkę PartialCachingControl w czasie wykonywania. SimpleControl Ustawienia buforowania obiektu można programowo manipulować za pomocą skojarzonego ControlCachePolicyPartialCachingControl obiektu, który jest dostępny za pośrednictwem odwołania do kontrolki, która go opakowuje. W tym przykładzie Duration właściwość jest analizowana podczas inicjowania strony i zmieniana przy użyciu SetSlidingExpiration metod i SetExpires , jeśli zostały spełnione pewne warunki.

<%@ 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>

Poniższy przykład kodu przedstawia użycie kontrolki SimpleControl użytkownika ze strony formularzy sieci Web. Aby pomyślnie uruchomić ten przykład, upewnij się, że plik kontroli użytkownika (ascx), jego plik za kodem (.cs lub .vb) oraz strona formularzy sieci Web hostujących kontrolkę użytkownika (.aspx) znajduje się w tym samym katalogu.

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>

Uwagi

Klasa ControlCachePolicy jest używana przez deweloperów w programowych scenariuszach sterowania użytkownikami w celu określenia ustawień buforowania danych wyjściowych dla kontrolek użytkownika (pliki ascx). ASP.NET osadza kontrolki użytkownika w wystąpieniu BasePartialCachingControl . Klasa BasePartialCachingControl reprezentuje kontrolkę użytkownika z włączoną buforowaniem danych wyjściowych. Gdy uzyskujesz dostęp do BasePartialCachingControl.CachePolicy właściwości kontrolki PartialCachingControl , zawsze otrzymasz prawidłowy ControlCachePolicy obiekt. Jeśli jednak uzyskujesz dostęp do UserControl.CachePolicy właściwości kontrolki UserControl , otrzymasz prawidłowy ControlCachePolicy obiekt tylko wtedy, gdy kontrolka użytkownika jest już opakowana przez kontrolkę BasePartialCachingControl . Jeśli nie jest opakowany, obiekt zwrócony przez właściwość będzie zgłaszać wyjątki podczas próby manipulowania nim, ControlCachePolicy ponieważ nie ma skojarzonego obiektu BasePartialCachingControl. Aby określić, czy UserControl wystąpienie obsługuje buforowanie bez generowania wyjątków, sprawdź SupportsCaching właściwość.

ControlCachePolicy Użycie klasy to jeden z kilku sposobów włączania buforowania danych wyjściowych. Poniższa lista zawiera opis metod, których można użyć do włączania buforowania danych wyjściowych:

  • Użyj dyrektywy , @ OutputCache aby włączyć buforowanie danych wyjściowych w scenariuszach deklaratywnych.

  • Użyj atrybutu PartialCachingAttribute , aby włączyć buforowanie kontrolki użytkownika w pliku za pomocą kodu.

  • ControlCachePolicy Użyj klasy , aby określić ustawienia pamięci podręcznej w scenariuszach programowych, w których pracujesz z BasePartialCachingControl wystąpieniami, które zostały włączone w pamięci podręcznej przy użyciu jednej z poprzednich metod i dynamicznie ładowane przy użyciu TemplateControl.LoadControl metody . Wystąpienie ControlCachePolicy można pomyślnie manipulować tylko między InitPreRender etapami i cyklu życia sterowania. Jeśli modyfikujesz ControlCachePolicy obiekt po PreRender fazie, ASP.NET zgłasza wyjątek, ponieważ wszelkie zmiany wprowadzone po renderowaniu kontrolki nie mogą rzeczywiście wpływać na ustawienia pamięci podręcznej (kontrolka jest buforowana podczas etapu Render ). Na koniec wystąpienie kontrolki użytkownika (i w związku z tym jego ControlCachePolicy obiekt) jest dostępne tylko do manipulowania programowego, gdy jest rzeczywiście renderowane.

Właściwości

Cached

Pobiera lub ustawia wartość wskazującą, czy buforowanie fragmentów jest włączone dla kontrolki użytkownika.

Dependency

Pobiera lub ustawia wystąpienie CacheDependency klasy skojarzonej z danymi wyjściowymi buforowanej kontrolki użytkownika.

Duration

Pobiera lub ustawia czas, przez jaki buforowane elementy mają pozostać w wyjściowej pamięci podręcznej.

ProviderName

Pobiera lub ustawia nazwę dostawcy pamięci podręcznej output-cache skojarzonego z wystąpieniem sterowania.

SupportsCaching

Pobiera wartość wskazującą, czy kontrolka użytkownika obsługuje buforowanie.

VaryByControl

Pobiera lub ustawia listę identyfikatorów kontrolek, aby zmieniać buforowane dane wyjściowe według.

VaryByParams

Pobiera lub ustawia listę nazw parametrów GET lub POST , aby zmieniać buforowane dane wyjściowe według.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
SetExpires(DateTime)

Instruuje kontrolkę BasePartialCachingControl , która opakowuje kontrolkę użytkownika w celu wygaśnięcia wpisu pamięci podręcznej w określonej dacie i godzinie.

SetSlidingExpiration(Boolean)

Instruuje kontrolkę BasePartialCachingControl , która opakowuje kontrolkę użytkownika, aby ustawić wpis pamięci podręcznej kontrolki użytkownika w celu użycia przesuwania lub bezwzględnego wygaśnięcia.

SetVaryByCustom(String)

Ustawia listę ciągów niestandardowych, których będzie używać pamięć podręczna danych wyjściowych w celu zmiany kontrolki użytkownika.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też