ControlCachePolicy Klasa

Definicja

Zapewnia programistyczny dostęp do ustawień wyjściowej pamięci podręcznej kontrolki użytkownika ASP.NET.Provides programmatic access to an ASP.NET user control's output cache settings.

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 demonstruje sposób dynamicznego ładowania kontrolki użytkownika i manipulowania nimi w czasie wykonywania.The following code example demonstrates how a user control can be loaded dynamically and manipulated programmatically at run time. Ten PartialCachingAttribute atrybut jest stosowany do kontrolki użytkownika o nazwie SimpleControl , co oznacza, że formant użytkownika jest opakowany przez PartialCachingControl kontrolkę w czasie wykonywania.The PartialCachingAttribute attribute is applied to a user control named SimpleControl, which means the user control is wrapped by a PartialCachingControl control at run time. SimpleControlUstawienia buforowania obiektu można programistycznie manipulować za pomocą skojarzonego ControlCachePolicy z nim obiektu, który jest dostępny za pomocą odwołania do PartialCachingControl formantu, który go otacza.The SimpleControl object's caching settings can be programmatically manipulated through its associated ControlCachePolicy object, which is available through a reference to the PartialCachingControl control that wraps it. W tym przykładzie Duration Właściwość jest sprawdzana podczas inicjowania strony i zmieniana przy użyciu SetSlidingExpiration metod i, SetExpires jeśli spełnione są pewne warunki.In this example, the Duration property is examined during page initialization and changed using the SetSlidingExpiration and SetExpires methods if some conditions are met.

<%@ 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 demonstruje użycie SimpleControl kontrolki użytkownika ze strony formularzy sieci Web.The following code example demonstrates using the SimpleControl user control from a Web Forms page. Aby pomyślnie uruchomić ten przykład, upewnij się, że plik kontrolny użytkownika (. ascx), jego plik związany z kodem (. cs lub. vb) i strona formularzy sieci Web, która hostuje kontrolkę użytkownika (. aspx), znajdują się w tym samym katalogu.To run this example successfully, make sure the user control file (.ascx), its code-behind file (.cs or .vb), and the Web Forms page that hosts the user control (.aspx) are in the same directory.

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

ControlCachePolicyKlasa jest używana przez deweloperów w programistycznych scenariuszach kontroli użytkowników, aby określić ustawienia buforowania danych wyjściowych dla formantów użytkownika (pliki. ascx).The ControlCachePolicy class is used by developers in programmatic user control scenarios to specify output caching settings for user controls (.ascx files). ASP.NET osadza kontrolki użytkownika w ramach BasePartialCachingControl wystąpienia.ASP.NET embeds user controls within a BasePartialCachingControl instance. BasePartialCachingControlKlasa reprezentuje kontrolkę użytkownika, która ma włączone buforowanie danych wyjściowych.The BasePartialCachingControl class represents a user control that has output caching enabled. Gdy uzyskujesz dostęp do BasePartialCachingControl.CachePolicy właściwości PartialCachingControl kontrolki, zawsze otrzymujesz prawidłowy ControlCachePolicy obiekt.When you access the BasePartialCachingControl.CachePolicy property of a PartialCachingControl control, you will always receive a valid ControlCachePolicy object. Jednakże, Jeśli uzyskujesz dostęp do UserControl.CachePolicy właściwości UserControl kontrolki, otrzymasz prawidłowy ControlCachePolicy obiekt tylko wtedy, gdy formant użytkownika jest już opakowany przez BasePartialCachingControl kontrolkę.However, if you access the UserControl.CachePolicy property of a UserControl control, you receive a valid ControlCachePolicy object only if the user control is already wrapped by a BasePartialCachingControl control. Jeśli nie jest opakowany, ControlCachePolicy obiekt zwrócony przez właściwość będzie generować wyjątki podczas próby manipulowania nim, ponieważ nie ma skojarzonego elementu BasePartialCachingControl .If it is not wrapped, the ControlCachePolicy object returned by the property will throw exceptions when you attempt to manipulate it because it does not have an associated BasePartialCachingControl. Aby określić, czy UserControl wystąpienie obsługuje buforowanie bez generowania wyjątków, zbadaj SupportsCaching Właściwość.To determine whether a UserControl instance supports caching without generating exceptions, inspect the SupportsCaching property.

Korzystanie z ControlCachePolicy klasy to jeden z kilku sposobów włączania buforowania danych wyjściowych.Using the ControlCachePolicy class is one of several ways you can enable output caching. Na poniższej liście opisano metody, których można użyć w celu włączenia buforowania danych wyjściowych:The following list describes methods you can use to enable output caching:

  • Użyj dyrektywy, aby włączyć buforowanie danych wyjściowych w scenariuszach deklaratywnych.Use the directive to enable output caching in declarative scenarios.

  • Użyj PartialCachingAttribute atrybutu, aby włączyć buforowanie dla kontrolki użytkownika w pliku związanym z kodem.Use the PartialCachingAttribute attribute to enable caching for a user control in a code-behind file.

  • Użyj ControlCachePolicy klasy, aby określić ustawienia pamięci podręcznej w scenariuszach programistycznych, w których pracujesz z BasePartialCachingControl wystąpieniami z włączoną obsługą pamięci podręcznej przy użyciu jednej z poprzednich metod i dynamicznie załadowanej przy użyciu TemplateControl.LoadControl metody.Use the ControlCachePolicy class to specify cache settings in programmatic scenarios in which you are working with BasePartialCachingControl instances that have been cache-enabled using one of the previous methods and dynamically loaded using the TemplateControl.LoadControl method. ControlCachePolicyWystąpienie może być pomyślnie manipulowane tylko między Init i PreRender etapami cyklu życia kontroli.A ControlCachePolicy instance can be successfully manipulated only between the Init and PreRender stages of the control life cycle. Jeśli zmodyfikujesz ControlCachePolicy obiekt po PreRender fazie, ASP.NET zgłosi wyjątek, ponieważ wszystkie zmiany wprowadzone po kontrolce są renderowane nie mogą faktycznie wpływać na ustawienia pamięci podręcznej (formant jest buforowany na Render etapie).If you modify a ControlCachePolicy object after the PreRender phase, ASP.NET throws an exception, because any changes made after the control is rendered cannot actually affect cache settings (a control is cached during the Render stage). Na koniec wystąpienie kontrolki użytkownika (i w związku z tym jego ControlCachePolicy obiekt) jest dostępne tylko na potrzeby manipulowania programistycznego, gdy jest faktycznie renderowany.Finally, a user control instance (and therefore its ControlCachePolicy object) is only available for programmatic manipulation when it is actually rendered.

Właściwości

Cached

Pobiera lub ustawia wartość wskazującą, czy buforowanie fragmentów jest włączone dla kontrolki użytkownika.Gets or sets a value indicating whether fragment caching is enabled for the user control.

Dependency

Pobiera lub ustawia wystąpienie CacheDependency klasy skojarzonej z buforowanym wyjściem kontrolki użytkownika.Gets or sets an instance of the CacheDependency class associated with the cached user control output.

Duration

Pobiera lub ustawia czas, przez który elementy buforowane muszą pozostawać w wyjściowej pamięci podręcznej.Gets or sets the amount of time that cached items are to remain in the output cache.

ProviderName

Pobiera lub ustawia nazwę dostawcy wyjściowej pamięci podręcznej, która jest skojarzona z wystąpieniem formantu.Gets or sets the name of the output-cache provider that is associated with a control instance.

SupportsCaching

Pobiera wartość wskazującą, czy kontrolka użytkownika obsługuje buforowanie.Gets a value indicating whether the user control supports caching.

VaryByControl

Pobiera lub ustawia listę identyfikatorów formantów w celu różnicowania danych wyjściowych w pamięci podręcznej przez.Gets or sets a list of control identifiers to vary the cached output by.

VaryByParams

Pobiera lub ustawia listę GET POST nazw parametrów w celu różnicowania danych wyjściowych w pamięci podręcznej przez.Gets or sets a list of GET or POST parameter names to vary the cached output by.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
SetExpires(DateTime)

Instruuje BasePartialCachingControl formant, który otacza formant użytkownika, aby wygaśnieł wpis pamięci podręcznej w określonym dniu i o określonej godzinie.Instructs the BasePartialCachingControl control that wraps the user control to expire the cache entry at the specified date and time.

SetSlidingExpiration(Boolean)

Instruuje BasePartialCachingControl formant, który otacza formant użytkownika w celu ustawienia wpisu pamięci podręcznej kontrolki użytkownika do używania przesuwanego lub bezwzględnego wygaśnięcia.Instructs the BasePartialCachingControl control that wraps the user control to set the user control's cache entry to use sliding or absolute expiration.

SetVaryByCustom(String)

Ustawia listę ciągów niestandardowych, które będą używane przez wyjściową pamięć podręczną do różnicowania kontrolki użytkownika.Sets a list of custom strings that the output cache will use to vary the user control.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy

Zobacz też