asp.net,缓存Cache
缓存Cache: 1>直接使用Cache["content"],缓存与Session不同,所有用户都可以共享。永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉。 2>设置绝对过期日期。Cache.Insert("nowTime", DateTime.Now, null, DateTime.Now.AddSeconds(7), TimeSpan.Zero); 3>设置滑动过期日期: Cache.Insert("nowTime", DateTime.Now, null, DateTime.MaxValue, TimeSpan.FromSeconds(5)); --------------------------------------------------------------------------- if (Cache["nowTime"] == null) { Cache.Insert("nowTime", DateTime.Now, null, DateTime.MaxValue, TimeSpan.FromSeconds(5)); } else { Response.Write("缓存中的时间:" + Cache["nowTime"]); } //--------------------------------------------------------------------------- 页面缓存: 当一个请求过来的时候,如果已经有该页面的缓存则不再继续创建该页面的对象了。在asp.net应用程序的生命周期中第6-7个事件的时候查找获取缓存对象。 <%@ OutputCache Duration="10" VaryByParam="*" %> 过期时间10秒,当请求的参数不同的时候,缓存立刻失效。 //-------------------------------------------------------------------- 数据源缓存: ---手动获取数据到集合,把集合放到Cache缓存中。每次访问页面的时候先检查Cache中是否有缓存,如果有就直接获取缓存中的数据。为Cache设置绝对过期时间. ---服务器端控件缓存,数据源控件缓存。--------------------------------------- 设置控件的:EnableCaching="true"、CacheDuration="10"、CacheExpirationPolicy="Absolute" <asp:ObjectDataSource CacheExpirationPolicy="Absolute" EnableCaching="true" CacheDuration="10" ID="ObjectDataSource1" runat="server" SelectMethod="GetAllComments" TypeName="Ajax.CRUD.BLL.TblCommentsBll"> </asp:ObjectDataSource> -------------------------------------------------------------------- -------------------(*)配置IIS输出缓存对静态文件缓存 选择IIS→网站→输出缓存→添加 //================================================================================ 缓存依赖。 ---依赖文件,只要文件发生变化,则缓存失效。 Cache.Insert("Time", DateTime.Now.ToString(), new System.Web.Caching.CacheDependency(Request.MapPath("test.txt"))); ---依赖数据库改变----------------------- //======================================================================================= 数据库缓存依赖 1、数据库缓存依赖 -S服务器名称 -E集成身份验证 -ed启动 -d数据库名称 -et指定缓冲依赖的表名 -t表名 在vs2010的命令提示符中运行(切换到aspnet_regsql.exe所在的目录) aspnet_regsql -S steve-pc -E -ed -d apsxDb -et -t TblComments 缓存依赖禁用该数据库 aspnet_regsql -S steve-pc -E -dd -d apsxDb 2、依赖于数据库的web.config配置 <system.web> <caching> <sqlCacheDependency enabled="true"> <databases> <add name="apsxDbEntityName" connectionStringName="connStr" pollTime="500"/> </databases> </sqlCacheDependency> </caching> </system.web> 3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("apsxDbEntityName", "Aspx_Students"); Cache.Insert("list", list, dep, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration); 缓存使用场景第一个:访问量大,变化比较少 典型场景:京东菜单项变化比较少,访问又特别大 //=========================================================================================