Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 1:40:12
在asp.net2.0页面部分缓存中使用ControlCachePolicy类

在asp.net2.0页面部分缓存中使用ControlCachePolicy类

使用ControlCachePolicy类

ControlCachePolicy是.NET Framework 2.0中新增的类,主要用于提供对用户控件的输出缓存设置的编程访问。ControlCachePolicy类与19.3.2节HttpCachePolicy类实现的作用类似,只是二者所访问的对象不同。HttpCachePolicy类用于访问页面输出缓存,而ControlCachePolicy类用于访问用户缓存。

ControlCachePolicy类包含6个属性,分别是Cached、Dependency、Duration、Supports Caching、VaryByControl和VaryByParams,如表1所示。



表1 ControlCachePolicy类的常用属性及说明

示例

使用ControlCachePolicy类实现设置用户控件缓存

本示例演示了如何在运行时动态加载用户控件,以及如何以编程方式操作用户控件进行Partial CachingAttribute 属性应用于一个名为Web UserControl的用户控件,这意味着该用户控件在运行时由PartialCachingControl控件包装。WebUserControl对象的缓存设置可以通过其关联的 ControlCachePolicy对象以编程方式进行操作,通过引用包装该对象的PartialCachingControl控件可获得该对象。在此示例中,在页初始化期间检查Duration属性并在满足某些条件的前提下使用SetSliding Expiration和Set Expires方法更改该属性。示例运行结果如图1所示。



图1 使用ControlCachePolicy类实现设置用户控件缓存

程序代码如下。

程序代码导读如下所示。

以下代码是一个包含用户控件WebUserControl.ascx的ASP.NET程序,主要以编程方式实现对用户控件输出缓存的设置。在实现过程中,由于需要设置用户控件缓存,那么必须在ASP.NET页面的Page_Init事件处理程序中进行详细设置。

l 使用TemplateControl.LoadControl方法动态加载WebUserControl..ascx文件。注意,由于用户控件WebUserControl..ascx已经为PartialCachingAttribute类包装,因此,LoadControl方法的返回对象不是空引用,而是PartialCachingControl实例。

l 使用PartialCachingControl实例对象的CachePolicy属性,获取ControlCachePolicy实例对象。该对象主要用于设置用户控件输出缓存的设置。并且使用SetExpires方法和参数为False的SetSlidingExpiration方法,设置用户控件输出缓存有效期为10s,并且设置缓存为绝对过期策略。

l 利用Controls类的Add方法将设置好的用户控件添加到页面控件层次结构中。另外,@ Reference指令用于对用户控件WebUserControl.ascx进行动态编译和链接。

WebUserControl用户控件前台代码如下:

<%@ Control Language="C#" AutoEventWireup="True" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>





可用数据:











缓存起始时间:











WebUserControl用户控件后台代码如下:

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(70)]

public partial class WebUserControl : System.Web.UI.UserControl

{

protected void Page_Init(object sender, EventArgs e)

{

Label1.Text = GetAvailableItems().ToString();

Label2.Text = DateTime.Now.ToLongTimeString();

}

private string GetAvailableItems()

{

SqlConnection sqlConnection = new SqlConnection("Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;");

SqlCommand sqlCommand = sqlConnection.CreateCommand();

sqlCommand.CommandType = CommandType.StoredProcedure;

sqlCommand.CommandText = "Ten Most Expensive Products";

sqlConnection.Open();


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759