asp.net缓存

来源:互联网 发布:噩梦 知乎 编辑:程序博客网 时间:2024/05/23 19:01

页面缓存:

例子:假设我们有一个新闻网站,在某一时刻有100个请求同时访问某一个新闻页面,难道我们需要和数据库交互100次吗,这时我们就可以用到页面缓存了,只在第一次请求时,查询数据库,并把请求的结果保存起来,后续的请求直接就取数据,而无须再和数据库交互。在访问量非常大时,启用页面缓存是非常有效果的;在访问量不大时,启用缓存,反而是浪费内存。

缓存:将数据放到内存里面去,下次请求直接从内存中读取数据,返回给客户端,不用再去访问数据库或者是磁盘了。用内存空间换磁盘读的时间。

(1)在aspx 页面上加上指令<%@ OutputCache Duration="15" VaryByParam="*"%>

这个指令表示,除了第一次请求经过页面的生命周期,后续的请求都直接从缓存中得到数据,缓存15秒,这里的*表示,一旦请求报文发生任何改变,缓存失效;如果把*换成none,表示无论请求的报文是否发生变化,都在15秒后缓存才结束;如果换成id 表示,只有id 参数发生变化的时候,页面的缓存才失效。

如果我们请求的页面中有缓存,则在管道事件第7个取得缓存内容后,直接返回内容给客户端,而不必执行后续事件。


数据源控件缓存:

在页面上添加一个数据源控件,右击属性,可以看到它有缓存的属性。


手动创建缓存:

Cache["Key"]=DateTime.Now.ToString(); //永不过期   //这里的Cache 相当于HttpContext.Current.Cache

//设置绝对过期时间缓存

Cache.Insert("key",DateTime.Now.ToString(),null,DateTime.Now.AddSecond(30),TimeSpan.Zero);  //null表示无依赖项

//设置滑动过期时间

Cache.Insert("key",DateTime.Now.ToString(),null,DateTime.MaxValue,new TimeSpan(0,0,10));

//设置依赖文件的缓存

string file=Server.MapPath("MsdnWoo.txt");

Cache.Insert("key",DateTime.Now.ToString(),new CacheDependency(file));

文件不改变,则缓存内容就不会改变。比如我们网站的菜单栏是加载xml文件形成的,这时候我们可以将这xml文件设置成依赖文件。


依赖数据库的缓存

看下在正式生产环境中,怎么用

if(Cache["User"]==null)

{

  Cache.Insert("User",list,new SqlCacheDependency("bjhksj","tb_user"));

}

0 0
原创粉丝点击