Aracılığıyla paylaş


ControlCachePolicy Sınıf

Tanım

ASP.NET kullanıcı denetiminin çıkış önbelleği ayarlarına program aracılığıyla erişim sağlar.

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

Örnekler

Aşağıdaki kod örneği, bir kullanıcı denetiminin çalışma zamanında dinamik olarak nasıl yüklendiğini ve program aracılığıyla nasıl düzenlendiğini gösterir. PartialCachingAttribute özniteliği adlı SimpleControlbir kullanıcı denetimine uygulanır, bu da kullanıcı denetiminin çalışma zamanında bir PartialCachingControl denetim tarafından sarmalandığı anlamına gelir. Nesnenin SimpleControl önbelleğe alma ayarları, ilişkili ControlCachePolicy nesnesi aracılığıyla program aracılığıyla değiştirilebilir ve bunu sarmalayan denetime PartialCachingControl başvuru yoluyla kullanılabilir. Bu örnekte, Duration özellik sayfa başlatma sırasında incelenir ve bazı koşullar karşılanırsa ve SetExpires yöntemleri kullanılarak SetSlidingExpiration değiştirilir.

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

Aşağıdaki kod örneği, bir Web Forms sayfasından SimpleControl kullanıcı denetiminin kullanılmasını gösterir. Bu örneği başarıyla çalıştırmak için kullanıcı denetim dosyasının (.ascx), arka planda kod dosyasının (.cs veya .vb) ve kullanıcı denetimini barındıran Web Forms sayfasının (.aspx) aynı dizinde olduğundan emin olun.

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>

Açıklamalar

ControlCachePolicy sınıfı, geliştiriciler tarafından programlı kullanıcı denetimi senaryolarında kullanıcı denetimleri (.ascx dosyaları) için çıktı önbelleğe alma ayarlarını belirtmek üzere kullanılır. ASP.NET kullanıcı denetimlerini bir BasePartialCachingControl örneğin içine ekler. sınıfı, BasePartialCachingControl çıktı önbelleğe alma özelliğinin etkinleştirildiği bir kullanıcı denetimini temsil eder. Bir PartialCachingControl denetimin özelliğine BasePartialCachingControl.CachePolicy eriştiğinde, her zaman geçerli ControlCachePolicy bir nesne alırsınız. Ancak, bir UserControl denetimin özelliğine UserControl.CachePolicy erişirsen, yalnızca kullanıcı denetimi zaten bir denetim tarafından sarmalanmışsa geçerli ControlCachePolicy bir BasePartialCachingControl nesne alırsınız. Sarmalanmazsa, özelliği tarafından döndürülen nesne, ControlCachePolicy ilişkili BasePartialCachingControlbir öğesi olmadığından onu işlemeye çalıştığınızda özel durumlar oluşturur. Bir UserControl örneğin özel durumlar oluşturmadan önbelleğe almayı destekleyip desteklemediğini belirlemek için özelliğini inceleyin SupportsCaching .

sınıfını ControlCachePolicy kullanmak, çıkış önbelleğini etkinleştirmenin çeşitli yollarından biridir. Aşağıdaki listede, çıktı önbelleğini etkinleştirmek için kullanabileceğiniz yöntemler açıklanmaktadır:

  • @ OutputCache Bildirim temelli senaryolarda çıktı önbelleğe almayı etkinleştirmek için yönergesini kullanın.

  • PartialCachingAttribute Arkadaki kod dosyasında kullanıcı denetimi için önbelleğe almayı etkinleştirmek için özniteliğini kullanın.

  • ControlCachePolicy Önceki yöntemlerden birini kullanarak önbellek etkinleştirilmiş ve yöntemini kullanarak dinamik olarak yüklenmiş örneklerle BasePartialCachingControl çalıştığınız programlı senaryolarda önbellek ayarlarını belirtmek için sınıfını TemplateControl.LoadControl kullanın. Bir ControlCachePolicy örnek, yalnızca denetim yaşam döngüsünün Init ve PreRender aşamaları arasında başarıyla değiştirilebilir. Aşamadan PreRender sonra bir ControlCachePolicy nesneyi değiştirirseniz, ASP.NET bir özel durum oluşturur, çünkü denetim işlendikten sonra yapılan değişiklikler önbellek ayarlarını gerçekten etkileyemez (aşama sırasında Render bir denetim önbelleğe alınır). Son olarak, bir kullanıcı denetimi örneği (ve dolayısıyla ControlCachePolicy nesnesi) yalnızca gerçekten işlendiğinde programlı işleme için kullanılabilir.

Özellikler

Cached

Parça önbelleğinin kullanıcı denetimi için etkinleştirilip etkinleştirilmediğini belirten bir değer alır veya ayarlar.

Dependency

Önbelleğe alınan kullanıcı denetimi çıkışıyla ilişkili sınıfın bir örneğini CacheDependency alır veya ayarlar.

Duration

Önbelleğe alınan öğelerin çıktı önbelleğinde kalacağı süreyi alır veya ayarlar.

ProviderName

Bir denetim örneğiyle ilişkili çıktı önbelleği sağlayıcısının adını alır veya ayarlar.

SupportsCaching

Kullanıcı denetiminin önbelleğe almayı destekleyip desteklemediğini belirten bir değer alır.

VaryByControl

Önbelleğe alınan çıkışı değiştirmek için denetim tanımlayıcılarının listesini alır veya ayarlar.

VaryByParams

Önbelleğe alınan çıkışı değiştirmek için veya parametre adlarının GET listesini alır veya POST ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
SetExpires(DateTime)

Kullanıcı denetimini sarmalayan denetime belirtilen tarih ve saatte önbellek girişinin süresinin dolmasını belirtir BasePartialCachingControl .

SetSlidingExpiration(Boolean)

Kullanıcı denetimini sarmalayan denetime, kullanıcı denetiminin önbellek girişini kayan veya mutlak süre sonu kullanacak şekilde ayarlamasını ister BasePartialCachingControl .

SetVaryByCustom(String)

Çıkış önbelleğinin kullanıcı denetimini değiştirmek için kullanacağı özel dizelerin listesini ayarlar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.