public partial class DataListDemo1 : System.Web.UI.Page
{
private SqlConnection conn;
private SqlDataAdapter dad;
private DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
/**使用缓存配置文件以声明方式设置页的可缓存性
在应用程序的 Web.config 文件中定义缓存配置文件,在配置文件中包括 duration 和 varyByParam 设置。
下面的 <caching> 配置元素定义名为 Cache30Seconds 的缓存配置文件,它将在服务器上将页缓存 30
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Cache30Seconds" duration="30"
varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
在使用配置文件的每个 ASP.NET 页中包含 @ OutputCache 指令,并将 CacheProfile 属性设置为 Web.config 文件中定义的缓存配置文件的名称。
下面的代码指定页应当使用名为 Cache30Seconds 的缓存配置文件:
<%@ OutputCache CacheProfile="Cache30Seconds" %>
**/
/**输出缓存机制Duration属性是设置缓存的时间,VaryByParam
* 是否通过参数发生改变
* 声明式完成
* <%@ OutputCache Duration="10" VaryByParam="none" %>
* 编程式完成
*Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
**/
/** 缓存是由 Cache 类实现的;缓存实例是每个应用程序专用的。
* 缓存生存期依赖于应用程序的生存期;重新启动应用程序后,将重新创建 Cache 对象。
* Cache 类提供了强大的功能,允许您自定义如何缓存项以及将它们缓存多长时间。
* 例如,当缺乏系统内存时,缓存会自动移除很少使用的或优先级较低的项以释放内存。
* 该技术也称为清理,这是缓存确保过期数据不使用宝贵的服务器资源的方式之一
*
*
*
* 实现数据的缓存机制:先用一个DataSet对象来保存数据缓存的对象,
* 判断数据缓存的对象是否是空,如果为空就是用户第一次请求页面;
* 就应该从连接数据库后所得到的表格中获取数据,而且并且设置给
* 数据缓存对象,如果不是空,就说明是第二次请求页面,就应该直
* 接获取已保存在数据缓存中的数据,这样就可以优化应用程序,不用
* 每次访问一次页面要连接一次数据库取得数据,可以用第一次取得的
* 数据放在数据缓存(对象是存在内存里的)
* 注意:只对于SqlDataSource控件里的DataSourceMode属性是DataSet时,属性
* 面板上就有设置缓存机制的各种属性
*
* 通过使用 Insert 方法将项添加到缓存中
* Cache.Insert("MyCache", ds);
* 从缓存中显式删除项
* Cache.Remove("MyCache");
*/
//实例化DataSet对象保存Cache对象
ds = (DataSet)Cache["MyCache"];
//判断数据缓存的对象是否是空
if (ds == null)
{
this.conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["pubsConnectionString"].ToString());
this.dad = new SqlDataAdapter("select emp_id,fname,lname,hire_date from employee", conn);
this.ds = new DataSet();
this.dad.Fill(ds);
//设置DataSet对象保存DataSet对象
Cache["MyCache"] = ds;
this.Label2.Text = "从表格创建的数据";
}
else {
this.Label2.Text = "从缓存获取的数据";
}
this.DataList1.DataSource = this.ds;
this.DataList1.DataBind();
}