Asp.Net2.0中的缓存

缓存

一、Output Caching输出缓存
 IIS会智能的配置缓存,默认是打开的;

定制Output Caching的两种基本方法
 1、基于底层API技术(编程难度大)
  通过设置System.Web.HttpCachePolicy属性来设置缓存,如:
  Response.Cache.SetExpires(DateTime.Now(60));//(和设置Duration一样)
  Response.Cache.SetCacheability(HttpCacheability.Public);//(和设置VaryByParam一样)

 2、基于高层的Output Caching技术
  2.1静态缓存:<%@ OutputCache Duration="5" VaryByParam="none" %>--缓存间隔5秒,VaryByParam指是否会因为返回参数不同而改变;
  2.2传递参数页面的缓存PostBackCache:当根据用户请求生成界面时,设置VaryByParam="State",?????=====配合指定SelectParameter=====?????,实现页面缓存;
  2.3硬盘缓存:IIS默认硬盘缓存是打开的,这也是VS2005的特性;方法如下:<%@ OutputCache Duration="3600" VaryByParam="none" DiskCachEable="true"%>这表示该页面将使用硬盘为缓存目标,一般这里设置的时间都比较大,因为缓存文件频繁被刷新的话,性能会比不缓存更差,一般将对实时性要求不高和数据量很大的页面采用硬盘缓存;可在WebConfig.xml中设置缓存大小(一般不指定,系统自动会给一个默认值)
  2.4回调缓存:通过API实现,可以针对每个请求在页面中插入动态部分,以弥补单独使用静态缓存的不足,例如某页面中80%的部分都不需要实时更新,但是有20%的部分需要实时更新,这时就用到回调缓存;它正常的设置<%@ OutputCache Duration="5" VaryByParam="none" %>,然后通过在页面中加入 <asp:Substitution MethodName="xxxxxx" ID="xxxx" runat="server" />来实现一部分缓存一部分不缓存的机制;


二、Fragment Caching碎片缓存

Page Fragment Caching:专门用于缓存用户控件,和回调缓存作用一样,但是实现比较简单;简单的实现是在用户控件ascx中设置缓存,但是在页面中不设置缓存,这样就只缓存了控件部分,而不缓存页面;ascx中还可包含对传递参数页面的缓存,例如ascx中有一个下拉框和一个数据表;

三、Data Caching
此方法会比Output Caching更提高性能,例如:从数据库中取得数据,然后将DataSet放到缓存中Cache("MyDataSet")中,然后在频繁访问时,从缓存读取数据,一般比较大的数据缓存如DataSet,会配合硬盘缓存来使用;也可以象以下这样实现:
   if(Cache["aaa"]==null)
   {
    Cache.Insert("aaa","1000");
    Response.Write("新建缓存");
   }
   else
   {
    Response.Write("读取缓存"+Cache["aaa"].ToString());
   }

四、SQL Caching
以上缓存技术中,一旦缓存过期,就会释放缓存,而SQL Caching通过配置数据库连接池,只有当数据库数据被改变时缓存才会改变;
aspnet_regsql.exe文件是专门注册SQL连接池的,对SQL7以上都有支持,通过配置,可以将连接池和本地应用程序连接,然后再页面中WebConfig中指定参数,就可以方便的进行访问,即可实现只有当数据库数据被改变时缓存才会改变;配置需要在DOS中完成,然后再在页面中加参数;(00:57:00)


五、Cache Configuration

原文地址:https://www.cnblogs.com/shen/p/537779.html