Nyelv

ControlCachePolicy Osztály

Definíció

Programozott hozzáférést biztosít egy ASP.NET felhasználói vezérlő kimeneti gyorsítótár-beállításaihoz.

public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
Öröklődés
ControlCachePolicy

Példák

Az alábbi példakód bemutatja, hogyan tölthető be egy felhasználói vezérlő dinamikusan és programozottan futtatáskor. Az PartialCachingAttribute attribútum egy felhasználó által elnevezett SimpleControlvezérlőelemre lesz alkalmazva, ami azt jelenti, hogy a felhasználói vezérlőt futtatáskor egy PartialCachingControl vezérlő burkolta be. Az SimpleControl objektum gyorsítótárazási beállításai programozott módon módosíthatók a társított ControlCachePolicy objektumon keresztül, amely a PartialCachingControl burkoló vezérlőelemre való hivatkozással érhető el. Ebben a példában a tulajdonságot a Duration lap inicializálása során vizsgáljuk meg, és bizonyos feltételek teljesülése esetén a metódusok és SetSlidingExpiration a SetExpires metódusok használatával módosítjuk.

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

Az alábbi példakód bemutatja, hogy a felhasználó vezérlője SimpleControl egy webes űrlaplapról van-e használva. A példa sikeres futtatásához győződjön meg arról, hogy a felhasználóvezérlő fájl (.ascx), a mögöttes kódfájl (.cs vagy .vb) és a felhasználói vezérlőt (.aspx) üzemeltető weblap ugyanabban a könyvtárban található.

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>

Megjegyzések

Az ControlCachePolicy osztályt programozott felhasználói vezérlési forgatókönyvekben használják a fejlesztők a felhasználói vezérlők (.ascx fájlok) kimeneti gyorsítótárazási beállításainak megadására. ASP.NET beágyazza a felhasználói vezérlőket egy BasePartialCachingControl példányba. Az BasePartialCachingControl osztály egy olyan felhasználói vezérlőt jelöl, amely engedélyezve van a kimeneti gyorsítótárazással. Amikor hozzáfér egy BasePartialCachingControl.CachePolicyPartialCachingControl vezérlő tulajdonságához, mindig érvényes ControlCachePolicy objektumot kap. Ha azonban egy vezérlő tulajdonságához fér hozzáUserControl.CachePolicy, akkor csak akkor kap érvényes UserControl objektumot, ha a felhasználói vezérlőt már becsomagolta egy ControlCachePolicy vezérlő.BasePartialCachingControl Ha nincs becsomagolva, a ControlCachePolicy tulajdonság által visszaadott objektum kivételeket fog eredményezni, amikor megpróbálja módosítani, mert nincs társítva BasePartialCachingControl. Annak megállapításához, hogy egy UserControl példány támogatja-e a gyorsítótárazást kivételek létrehozása nélkül, vizsgálja meg a tulajdonságot SupportsCaching .

ControlCachePolicy Az osztály használata a kimeneti gyorsítótárazás engedélyezésének számos módja közé tartozik. Az alábbi lista a kimeneti gyorsítótárazás engedélyezéséhez használható módszereket ismerteti:

  • @ OutputCache Az irányelv használatával deklaratív forgatókönyvekben engedélyezheti a kimeneti gyorsítótárazást.

  • Az attribútum használatával engedélyezheti a PartialCachingAttribute gyorsítótárazást egy felhasználóvezérlő számára egy kód mögötti fájlban.

  • ControlCachePolicy Az osztály használatával olyan programozott forgatókönyvekben adhatja meg a gyorsítótár beállításait, amelyekben olyan példányokkal BasePartialCachingControl dolgozik, amelyek az előző metódusok egyikével gyorsítótárazva lettek, és dinamikusan betöltötték a TemplateControl.LoadControl metódust. A ControlCachePolicy példányok csak a vezérlési életciklus és Init a PreRender fázisok között kezelhetők sikeresen. Ha a ControlCachePolicy fázis után módosít egy PreRender objektumot, ASP.NET kivételt okoz, mert a vezérlő renderelése után végrehajtott módosítások valójában nem befolyásolhatják a gyorsítótár beállításait (a vezérlő a Render fázisban gyorsítótárazva van). Végül egy felhasználóvezérlő példány (és így az objektuma ControlCachePolicy ) csak akkor érhető el programozott manipulációhoz, ha ténylegesen renderelik.

Tulajdonságok

Név Description
Cached

Lekéri vagy beállít egy értéket, amely jelzi, hogy a töredék gyorsítótárazása engedélyezve van-e a felhasználói vezérlő számára.

Dependency

Lekéri vagy beállítja a CacheDependency gyorsítótárazott felhasználói vezérlő kimenetéhez társított osztály egy példányát.

Duration

Lekéri vagy beállítja, hogy a gyorsítótárazott elemek mennyi ideig maradjanak a kimeneti gyorsítótárban.

ProviderName

Lekéri vagy beállítja a vezérlőpéldányhoz társított kimeneti-gyorsítótár-szolgáltató nevét.

SupportsCaching

Beolvas egy értéket, amely jelzi, hogy a felhasználói vezérlő támogatja-e a gyorsítótárazást.

VaryByControl

Lekéri vagy beállítja a vezérlőazonosítók listáját a gyorsítótárazott kimenet módosítása érdekében.

VaryByParams

Lekéri vagy beállítja a GET gyorsítótárazott kimenetet változó paraméternevek listáját vagy POST beállítását.

Metódusok

Név Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
SetExpires(DateTime)

Utasítja a BasePartialCachingControl felhasználói vezérlőt burkoló vezérlőt, hogy a gyorsítótár-bejegyzés a megadott időpontban és időpontban lejárjon.

SetSlidingExpiration(Boolean)

Utasítja a BasePartialCachingControl felhasználói vezérlőt burkoló vezérlőt, hogy állítsa be a felhasználói vezérlő gyorsítótár-bejegyzését a csúszás vagy az abszolút lejárat használatára.

SetVaryByCustom(String)

Beállítja azoknak az egyéni sztringeknek a listáját, amelyeket a kimeneti gyorsítótár a felhasználói vezérlők eltérő használatára fog használni.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes:

Lásd még