Tips/Tricks#1:在GridView中使用Cache

在GridView中使用Cache

注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章。今天开始第一篇。

本篇技巧和诀窍记录的是:使用GridView控件来绑定数据库,利用缓存技术提高程序的性能。

//添加这个引用
using System.Data.SqlClient;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        BindData();
    }
}
private void BindData()
{
    if (Cache["Cache"] == null)
    {
        SqlConnection con = new SqlConnection("Data Source=
        .\\SQLEXPRESS;AttachDbFilename=|DataDirectory|NORTHWND.MDF;
        Integrated Security=True;User Instance=True");
        SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Categories",
         con);
        DataSet ds = new DataSet();
        ad.Fill(ds);
        Cache.Insert("Cache", ds, null, DateTime.Now.AddMinutes(2),
               TimeSpan.Zero);
        GridView1.DataSource = ds;
    }
    else
        GridView1.DataSource = (DataSet)Cache["Cache"];
    GridView1.DataBind();
}

主要这句:

Cache.Insert("Cache", ds, null, DateTime.Now.AddMinutes(2), TimeSpan.Zero);

第一个参数:用于引用该对象的缓存键。
第二个参数:要插入缓存中的对象。
第三个参数:所插入对象的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数包含 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。
第四个参数:所插入对象将过期并被从缓存中移除的时间。若要避免可能出现的本地时间方面的问题(如从标准时间更改为夏时制),请对此参数值使用 UtcNow,不要使用 Now。如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration。
第五个参数:最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。如果使用可调过期,则 absoluteExpiration 参数必须为 NoAbsoluteExpiration

原文出处:GridView With Cache(2008.3.12)


作者:李永京YJingLee's Blog
出处:http://lyj.cnblogs.com
转载请注明此处,谢谢!

Tag标签: ASP.NET,Gridview
posted @ 2008-03-13 15:52 李永京 阅读(613) 评论(9)  编辑 收藏 所属分类: ASP.NET

  回复  引用  查看    
#1楼 2008-03-15 09:13 | Eyu.NET      
博主 做个依赖性缓存的例子看看
  回复  引用  查看    
#2楼 [楼主]2008-03-17 21:29 | 李永京      
@Eyu.NET
好的,我找找这个例子以后贴出来,现在太忙了,不好意思啊。
  回复  引用    
#3楼 2008-04-13 03:58 | 赞凯 [未注册用户]
楼主,我是初学者,我都在CS文件里声明一个静态DATASET ,页面加载里,静态DATASET取数据,然后绑定,页面再刷新时,就由静态DATASET提供数据,这样不知道有没有坏处? fishlikegame@tom.com
  回复  引用  查看    
#4楼 [楼主]2008-04-13 10:21 | 李永京      
@赞凯
你这样是正常的做法,一般都是这样做的,但是,性能上有所欠缺,这里只是提供了一个技巧,一开始加载,缓存页面,在页面刷新时,从缓存中读取数据。这样提高了程序的性能。
  回复  引用  查看    
#5楼 2008-04-24 19:19 | nicye      
内存吃不消,建议生成静态文件还好过
  回复  引用  查看    
#6楼 2008-04-24 19:22 | nicye      
另外,System.Web.Caching.Cache 不是什么好东西,我深受其害

读写频繁时,经常无故丢失,内存非示占满,反复测试了一个多月,最好放弃了它

对于写不频繁来讲,用它也不好,因为内存吃不消
  回复  引用  查看    
#7楼 [楼主]2008-04-24 21:04 | 李永京      
@nicye
谢谢提出建议,静态页是个很好的方法。
  回复  引用  查看    
#8楼 2008-05-27 14:27 | yigehaoren      
其实都要根据实际情况来决定使用哪种方式。
System.Web.Caching.Cache虽然只是一把水果刀,但它也是刀。
哈哈
至少它给出了缓存的简单机理,就是必须找个地方存储,并且要有更新策略。
  回复  引用  查看    
#9楼 [楼主]2008-05-27 16:25 | 李永京      
@yigehaoren
具体问题具体分析。