作者: xxzqb, 出处:blog, 责任编辑: 王晓晨,
2008-08-05 08:05
数据缓存(Data Caching)就是将数据暂存于内存缓存区中的一种技术。
当网页的内容相对固定时,可以将整个网页缓存起来。因为对于动态网页来说,网页的访问大体上可以分为三个步骤:
● 用户请求
● 动态生成网页并转化为HTML格式
● 向浏览器发送显示
(1) 在网站中增加一个网页,放入一个label控件,假定将控件命名为TimeMsg。
(2) 在网页的Page_Load事件编写如下代码,以便在TimeMsg控件中显示打开网页的时间。
{TimeMsg . text=”打开网页的时间是:”+DataTime . Now . ToString()}
(3) 在*.aspx网页的代码中增加设置缓存的指令:
语句””是网页配置的指令,在这里用来给网页指定缓存参数。 其中:Duration=”60” (注意:时间两端要加引号)代表缓存持续时间为60秒,VaryByParam属性用来指定特定版本的网页输出。 在配置指令中一定要加入VaryByParam属性。即使不使用这个版本属性,也要将它加入,但将其值设为 none 。
网页缓存以后,不论访问的用户来自世界何处,都直接从缓存区中提取出来直接送发显示。
通常情况下,大量数据是保存在数据库中的,而应用程序访问数据库是一项很费时的操作。
如果先将数据库中的数据缓存到缓存区中,当应用程序需要这些数据时,直接从缓存区中提取,就可以减少系统开销。
在ASP . NET 2.0中可以通过数据源设置数据表的缓存参数。 在SqlDataSoure控件的属性中有几项用于设置缓存的参数。
● CacheDuration:代表缓存的持续时间。默认时间为王晓晨 Infinite(无限)。本例中设置为600秒。
● CacheExpirationPolicy:缓存策略。包括两种设置:Absolute和sliding 。当设置成Absolute时,时限一到,缓存区失效;当设置为sliding时,时限一到立即刷新缓存区中的数据,并继续缓存更新后的数据。
● EnableCaching:默认为False,即不使用数据缓存,将该属性改为True,即可启动数据缓存。
● SqlCacheDependency:缓存依赖关系。例如设置为pubs:authors 表示数据库pubs中的authors数据表与它的数据缓存之间建立依赖关系。
属性中作了上述设置后,将自动形成以下代码:
ID=”SqlDataSource1” EnableCaching=”true” CacheDuration=”600” ConnectionString=”Server=localhost ; database=pubs ;” selectCommand=”select title from titles” Runat=”Server” /> |
有时数据表太大,缓存区可能会占用太大的内存空间。 可以将数据缓存到硬盘的缓存区中,为了实现这一点,需要做一些专门的设置。设置包括两方面。
一方面,在网页的代码中增加以下配置语句:
另一方面,在Web . config文件中指定硬盘缓存区的大小,配置语句如下:
<system . web> <caching> <outputCache> <diskCache enabled=”True” maxSizePerApp=”2” /> </outputCache> </caching> </system . web> |
前面的语句中关键部分已经用粗体表示。其中,DiskCache enabled=”True”用来启动硬盘缓存功能;maxSizePerApp=”2”用来确定缓存区的容量,这里确定的缓存区最大容量为2兆。 由于对硬盘的存取速度比较慢,因此硬盘缓存只适用于缓存持续时间较长的情况(本例中缓存时间为60分钟)。
3. 缓存池
数据缓存技术大大提高了数据访问的速度,但却可能引发数据不一致的问题。
因此,以上数据缓存技术只适用于数据量大,变化频率不高的数据。 现在ASP . NET 2.0新版本结合数据库SQL Server2005,对数据缓存功能又作了很大改进,既简化了使用进程,又完善了处理措施,其中最突出的一点就是与数据库相结合自动解决了数据失效的问题。
在ASP . NET 2.0中为了解决数据实效的问题,通过新类SQLCacheDependency建立起与新一代数据库的SQL缓存依赖关系,这种关系可以使得数据库能够自动监视数据表的状况,一旦数据表发生了变化,立即启动数据库本身的触发器将相应的缓存区中的数据变为无效。
发布评论