页面缓存:
例子:假设我们有一个新闻网站,在某一时刻有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"));
}