当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET2.0缓存(Cache)技术深入理解

ASP.NET2.0缓存(Cache)技术深入理解

2017年12月12日  | 移动技术网IT编程  | 我要评论

9c8917,yy紫金公会,政府信息公开的意义

asp.net2.0提供了一些新的用于提升程序性能的技术特性,其中,缓存技术是非常重要的一个特性,它提供了一种非常好的本地数据缓存机制,从而有效的提高数据访问的性能。
数据缓存(datacaching)就是将数据暂存于内存缓存区中(有时也暂存于硬盘缓存区中)的一种技术.当数据本身改变得不怎么频繁,而被访问的频率又比较高时,采用这种技术将大大提高警惕数据访问的效率.
1.网页输出缓存
(1)加显缓存
<%@outputcacheduration="60"varybyparam=none%>
语句<%@%>是网页配置的指令,在这里用来给网页指定缓存参数.其中:duration="60"代表缓存持续时间为60秒,varybyparam属性用来指定特定版本的网页输出,因哪个参数而改变.在<%@outputcache%>配置指令中一定要加入varybyparam属性.即使不使用这个版本属性,也要将它加入,但将其值设为none.
(2)回调缓存
<%@outputcacheduration=60varybyparam=stata%>
根据lll.aspx?stata=的内容分别缓存
下面的方法可以根据内容刷新
复制代码 代码如下:

<scriptrunat="server">
sharedfunctiongetcurrentdate(byvalcontextashttpcontext)asstring
returnnow.tostring()
endfunction
</script>
<asp:substitutionid="substitution1"runat="server"methodname="getcurrentdate"/>

2.数据库缓存
在asp.net2.0中可以通过数据源设置数据表的缓存参数.在sqldatasource控件的属性中有几项用于设置缓存的参数.
cacheduration:代表缓存的持续时间.默认为infinite(无限)
cacheexpirationpolicy:缓存的策略.包括两种设置:absolute和sliding.当设置成前者时,时限一到缓存区失效;当设置为后者时,时限到立即刷新缓存区中的数据,并继续缓存更新后的数据.
cachekeydependency:可以用于sqlserver2005数据库.
enablecaching:默认时为false,即不使用数据缓存,将该属性改为true时即可启动数据缓存.
sqlcachedependecy:缓存依赖关系.例如设置为pubs:authors表示数据库pubs中的authors数据表与它的数据缓存之间建立依赖关系.
有时数据表太大,缓存区可能会占用太大的内存空间.可以将数据缓存到硬盘的缓存区中,为了实现这一点,需要做一些专门的设置.设置包括两方面.
:在网页中配置<%@outputcacheduration="3600"varybyparam="none"diskcacheable="true"%>
:在web.config文件中指定硬盘缓区区的大小,配置的语句如下:
复制代码 代码如下:

<system.web>
<caching>
<outputcache>
<diskcacheenabled="true"maxsizeperapp="2"/>
</outputcache>
</caching>
</system.web>

其中diskcacheenabled="true"用来启动硬盘缓存功能;maxsizeperapp="2"用来确定缓存区的容量,这里确定的缓存区最大容量为2m.同于对硬盘的存取速度比较慢,因此硬盘缓存只适用于缓存持续时间较长的情况(本例中缓存时间为1小时).

3.缓存池
数据缓存技术大大提高警惕了数据访问的速度,但却可能引发数据不一致的问题.因此以上缓存技术只适用于数据量大,变化频率不高的数据.现在asp.net2.0新版本结合数据库sqlserver2005,对数据缓存功能又做了很大的改进,既简化了使用过程,又完善了处理措施,其中最突出的一点就是与数据库相结合自动解决了数据失效问题.
在asp.net2.0中为了解决数据失效问题,通过新类sqlcachedependency建立起与新一代数据库的"sql缓存依赖关系(sqlexpressdependencycaching)",这种关系可以使得数据库能够自动监视数据表的状况,一旦数据表发生了变化,立即启动数据库本身的触发器将相应的缓存区中的数据变为无效.
此方法也可用于sql7/2000数据库,但是使用关必须先配置所监视的数据库.配置方法比较麻烦,但配置后使用起来还是很简单的.对于更早期版本的sqlserver或者其他类型的数据库(例如oracle),则不能利用这一功能.
配置数据库连接池
c:\windows\microsoft.net\framework\v2.0.50727>aspnet_regsql.exe
运行asp.netsqlserver配置向导
aspnet_regsql.exe–s“\dbname”–e–d“pubs”–ed
-ewindows授权
–ed为enabled
aspnet_regsql.exe–s“\dbname”–e–d“pubs”–et–t“authors”
当pubs.authors改变时改变缓存
<%@outputcacheduration="9999999"varybyparam="none"sqldependency="pubs.authors"%>
缓存配置
复制代码 代码如下:

<caching>
<outputcache>
<diskcacheenabled="true"maxsizeperapp="2"/>
</outputcache>
<outputcachesettings>
<outputcacheprofiles>
<addname="cachefor60seconds"duration="60"/>
</outputcacheprofiles>
</outputcachesettings>
<!--
<sqlcachedependencyenabled="true"polltime="1000">
<databases>
<addname="pubsdb"connectionstringname="pubsconnectionstring"/>
</databases>
</sqlcachedependency>
-->
</caching>

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网