一、缓存概述
缓存是在内存中保存创建代价高的信息副本的一种技术,它可以同时提高性能和扩展性。
二、缓存的分类
1、客服端缓存(客服端浏览器的硬盘上保留的静态文件)
2、服务端缓存
(1)静态文件缓存(静态页面)
(2)动态缓存
1)传统缓存方式
2)页面输出缓存
写法一、将整个ASP.NET页面内容保存在服务器内存中。用法:在aspx页面的顶部加<%@ OutputCache Duration="60" VaryByParam="none" %>,其中Duration表示缓存的时间,VaryByParam表示页面根据什么方式发送的参数来更新缓存的内容。
写法二、在web.config中加入该配置:
1 <system.web> 2 <caching> 3 <outputCacheProfiles> 4 <add name="CacheTest" duration="50" /> 5 </outputCacheProfiles> 6 </caching> 7 </system.web> 8 9 //页面中声明: 10 <%@ OutputCache CacheProfile="CacheTest" VaryByParam="none" %>
其他属性用法:VaryByControl通过控制文件中包含的服务器控件来改变缓存。
3)页面局部缓存
1、控件缓存(将静态内容放在一个用户控件中,并将该用户控件标记为缓存,用户控件中写法跟上面一样)
2、缓存后替换(与控件缓存相反,它对整个页面进行缓存,动态变化的内容使用Subtitution控件)
4)利用.NET提供的System.Web.Caching缓存(GetCache()与SetCache()方法)
5)缓存依赖
a)、文件缓存依赖(可以解决缓存带来的数据滞后性问题,一般适合读取配置文件的缓存处理)
这种策略让缓存依赖于一个指定的文件,通过改变文件的更新日期来清除缓存。
关键代码如下所示:
1 System.Web.Caching.CacheDependency dep=new Syste.Web.Caching.CacheDependency("C:\\text.txt"); 2 SetCache(Cachekey,objModel,dep); //objModel:缓存对象
b)、数据库缓存依赖
步骤:
一、在web.config的<system.web>节中写入:
1 <caching> 2 <sqlCacheDependency enabled="true" pollTime="6000"> 3 <databases> 4 <add naem="codematic" connectionStringName="strcodematic"/> 5 </databases> 6 </sqlCacheDependency > 7 </caching>
二、执行下面的命令,为数据库启用缓存依赖
aspnet_regsql.exe工具位于windows\\microsoft.net\\framework\\[版本]文件夹中。
aspnet_regsql -c "连接数据库的字符串" -ed -et -t "表名"
三、在代码中使用缓存,关键代码如下所示:
1 1 System.Web.Caching.SqlCacheDependency dep=new Syste.Web.Caching.SqlCacheDependency("codematic","p_Product"); 2 2 SetCache(Cachekey,objModel,dep); //objModel:缓存对象,p_Product:表名
3、第三方缓存系统(Cache Application Block,Memcached,Cacheman)