asp.net2.0的缓存机制

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();

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章