Bagikan melalui


ControlCachePolicy Kelas

Definisi

Menyediakan akses terprogram ke pengaturan cache output kontrol pengguna ASP.NET.

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

Contoh

Contoh kode berikut menunjukkan bagaimana kontrol pengguna dapat dimuat secara dinamis dan dimanipulasi secara terprogram pada durasi. Atribut PartialCachingAttribute diterapkan ke kontrol pengguna bernama SimpleControl, yang berarti kontrol pengguna dibungkus oleh PartialCachingControl kontrol pada durasi. Pengaturan SimpleControl penembolokan objek dapat dimanipulasi secara terprogram melalui objek terkait ControlCachePolicy , yang tersedia melalui referensi ke PartialCachingControl kontrol yang membungkusnya. Dalam contoh ini, Duration properti diperiksa selama inisialisasi halaman dan diubah menggunakan SetSlidingExpiration metode dan SetExpires jika beberapa kondisi terpenuhi.

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

Contoh kode berikut menunjukkan penggunaan SimpleControl kontrol pengguna dari halaman Formulir Web. Agar berhasil menjalankan contoh ini, pastikan file kontrol pengguna (.ascx), file code-behind-nya (.cs atau .vb), dan halaman Formulir Web yang menghosting kontrol pengguna (.aspx) berada dalam direktori yang sama.

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>

Keterangan

Kelas ControlCachePolicy ini digunakan oleh pengembang dalam skenario kontrol pengguna terprogram untuk menentukan pengaturan penembolokan output untuk kontrol pengguna (file.ascx). ASP.NET menyematkan kontrol pengguna dalam BasePartialCachingControl instans. Kelas BasePartialCachingControl mewakili kontrol pengguna yang mengaktifkan penembolokan output. Ketika Anda mengakses BasePartialCachingControl.CachePolicy properti PartialCachingControl kontrol, Anda akan selalu menerima objek yang valid ControlCachePolicy . Namun, jika Anda mengakses UserControl.CachePolicy properti UserControl kontrol, Anda menerima objek yang valid ControlCachePolicy hanya jika kontrol pengguna sudah dibungkus oleh BasePartialCachingControl kontrol. Jika tidak dibungkus, ControlCachePolicy objek yang dikembalikan oleh properti akan melemparkan pengecualian ketika Anda mencoba memanipulasinya karena tidak memiliki yang terkait BasePartialCachingControl. Untuk menentukan apakah UserControl instans mendukung penembolokan tanpa menghasilkan pengecualian, periksa SupportsCaching properti .

ControlCachePolicy Menggunakan kelas adalah salah satu dari beberapa cara Anda dapat mengaktifkan penembolokan output. Daftar berikut menjelaskan metode yang bisa Anda gunakan untuk mengaktifkan penembolokan output:

  • Gunakan direktif @ OutputCache untuk mengaktifkan penembolokan output dalam skenario deklaratif.

  • PartialCachingAttribute Gunakan atribut untuk mengaktifkan penembolokan untuk kontrol pengguna dalam file code-behind.

  • ControlCachePolicy Gunakan kelas untuk menentukan pengaturan cache dalam skenario terprogram tempat Anda bekerja dengan BasePartialCachingControl instans yang telah diaktifkan cache menggunakan salah satu metode sebelumnya dan dimuat secara dinamis menggunakan TemplateControl.LoadControl metode . Instans ControlCachePolicy dapat berhasil dimanipulasi hanya antara Init tahap dan PreRender siklus hidup kontrol. Jika Anda mengubah ControlCachePolicy objek setelah PreRender fase, ASP.NET melempar pengecualian, karena perubahan apa pun yang dilakukan setelah kontrol dirender tidak benar-benar memengaruhi pengaturan cache (kontrol di-cache selama Render tahap). Akhirnya, instans kontrol pengguna (dan oleh karena itu objeknya ControlCachePolicy ) hanya tersedia untuk manipulasi terprogram ketika benar-benar dirender.

Properti

Cached

Mendapatkan atau menetapkan nilai yang menunjukkan apakah penembolokan fragmen diaktifkan untuk kontrol pengguna.

Dependency

Mendapatkan atau mengatur instans kelas yang CacheDependency terkait dengan output kontrol pengguna yang di-cache.

Duration

Mendapatkan atau mengatur jumlah waktu item yang di-cache akan tetap berada di cache output.

ProviderName

Mendapatkan atau mengatur nama penyedia output-cache yang terkait dengan instans kontrol.

SupportsCaching

Mendapatkan nilai yang menunjukkan apakah kontrol pengguna mendukung penembolokan.

VaryByControl

Mendapatkan atau mengatur daftar pengidentifikasi kontrol untuk memvariasikan output yang di-cache.

VaryByParams

Mendapatkan atau mengatur daftar GET nama parameter atau POST untuk memvariasikan output yang di-cache.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
SetExpires(DateTime)

Menginstruksikan BasePartialCachingControl kontrol yang membungkus kontrol pengguna untuk kedaluwarsa entri cache pada tanggal dan waktu yang ditentukan.

SetSlidingExpiration(Boolean)

Menginstruksikan BasePartialCachingControl kontrol yang membungkus kontrol pengguna untuk mengatur entri cache kontrol pengguna untuk menggunakan geser atau kedaluwarsa absolut.

SetVaryByCustom(String)

Mengatur daftar string kustom yang akan digunakan cache output untuk memvariasikan kontrol pengguna.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga