C#缓存处理

  c#缓存处理方式:

1 、    在ASP.NET中页面缓存的使用方法非常的简单,只需要在aspx页的顶部加这样一句声明即可:    <%@ OutputCache Duration="60" VaryByParam="none" %>

  其中:   Duration     缓存的时间(秒)。这是必选属性。如果未包含该属性,将出现分析器错误。如果不加<%@ OutputCache Duration="60" VaryByParam="none" %>,每次刷新页面上的时间每次都是在变。而加了缓存声明以后,每次刷新页面的时间并不变化,60秒后才变化一次,说明数据被缓存了60秒。

 

2、 通过后台代码的形式添加:

protected void Page_Load(object sender, EventArgs e) {
            Bind();
        }
        public void Bind()
        {
            DataTable dt = new DataTable();           
            if (this.Cache["Keys"] == null)
            {
                string connstring = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
                SqlConnection conn = new SqlConnection(connstring);
                conn.Open();
                string sql = "select top 100000 * from SF_InstanceActivity";
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                da.Fill(dt);
                conn.Close();
                // Go get the data from the database
                this.Cache.Insert("Keys", dt, null, DateTime.Now.AddHours(2), TimeSpan.Zero);
            }
            else
            {
               dt = this.Cache["Keys"] as DataTable;
            }
            ASPxGridView1.DataSource = dt;
            ASPxGridView1.DataBind();
        }

上例首先检查具有Keys键的项是否在缓存中。如果不在,就从后端数据库检索一个ADO.NET DataTable,并使用Insert方法把它放到缓存中。本例使用的是Insert的一个重载版本,它允许为缓存对象指定一个绝对过期时间(2小 时),而不是指定一个周期性的过期。相反,如果缓存中已经有这个项,就将其取回,并使用As表达式,将其强制转换回一个DataTable。
对 ADO.NET检索到的数据进行缓存时,注意既可像上例那样缓存DataTable对象,也可缓存整个DataSet对象,因为两种对象都同任何数据源完 全地断开,不会保持数据库连接。对数据读取器(比如SqlDataReader)进行缓存似乎更好一些,因为它们只使用一次(它们是“只进”的读取器), 而且在打开的情况下将一直占据一个数据库连接。
ASP.NET缓存引擎强大的灵活性和功能使其成为创建高性能ASP.NET应用程序时最重要的特性之一。

 

发布了45 篇原创文章 · 获赞 10 · 访问量 34万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章