ControlCachePolicy Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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:
@ OutputCacheAz 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
InitaPreRenderfázisok között kezelhetők sikeresen. Ha a ControlCachePolicy fázis után módosít egyPreRenderobjektumot, 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ő aRenderfá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 |
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) |