深入剖析ASP.NET 2.0缓冲机制(1)

本文探讨了ASP.NET 2.0中增强的缓冲机制,包括数据库触发的缓存无效功能、SqlDataSource控件级别的缓存支持及Substitution控件的使用。通过示例展示了如何在SqlDataSource控件中实现基于时间的缓存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓冲功能是开发人员构建ASP.NET 2.0 Web应用程序的重要关注点之一。本文试图通过三个示例页面全面剖析ASP.NET 2.0提供的新的缓冲机制。

一、简介

ASP.NET 1.x Cache API是一种革命性特征。当一个XML文件或另一个缓冲项的内容改变时,Cache API提供了诸如声明性输出缓冲、以编程方式控制输出缓冲以及使缓冲项无效等能力。尽管这大大改进了Web应用程序的性能,但遗憾的是,ASP.NET 1.x并没有提供一种机制来实现当数据库中的数据改变时使一个缓存对象中的数据无效。最终,在ASP.NET 2.0中加入了这一特征。此外,ASP.NET 2.0还提供了特定功能用于缓冲一个SqlDataSource控件的输出—你可以充分利用缓冲优点而不用编写一行代码。本文中,让我们共同讨论这些新的 缓冲特征,以及如何把它们应用于自己的Web应用程序。

在ASP.NET 2.0中,缓冲以多种方式加以改进。也许最引人瞩目的改进是引入了数据库触发的缓存无效机制。在ASP.NET 1.x中,你能够基于一些预定义条件(例如一个XML文件中的改变,在另一个缓存项中的改变等)来使一个缓冲项无效。借助于这一特征,当数据或另一个缓冲 项改变时,你可以删除或从缓存中使该项无效。然而,当一个SQL Server数据库中的数据改变时,ASP.NET 1.x Cache API并不允许你使缓存中的一个项成为无效的,尽管大多数应用程序都要求具有这种能力。相比之下,ASP.NET 2.0则特别重视这一点—通过提供数据库触发的缓存无效功能,它使你确保缓存中的项与数据库中的改变保持同步更新。

ASP.NET 2.0另一个重要的缓冲特征是能够在SqlDataSource级上支持缓冲。该SqlDataSource控件能够操作SQL Server、OLEDB、ODBC和Oracle数据库等多种数据库 ,而且支持你使用SQL命令选择、更新、删除和插入数据。现在,借助于在SqlDataSource控件级上设置缓冲属性的能力,你可以更为细致地控制缓冲的数据。

ASP.NET 2.0还提供一个新的Substitution控件,你能够使用它来把动态的内容注入到另一个缓冲的Web页面中。如果你有一个启动了输出缓冲功能的页面 但是仍然想显示动态的内容(这需要在每次请求该页面时重新生成)的话,那么你可以考虑使用该Substitution控件。

下列几节中,我将详细分析上面的特征并提供相关的示例。

【提示】本文中提供了三个简单但完整的aspx页面源码,我使用Visual Studio 2005在一个简单web工程Caching中分别试验,并用浏览器预览这三个页面。至于如何建立工程与SQL Server 2005/2000/7.0示例数据库Northwind的连接,在此略过。

二、在SqlDataSource控件中实现基于时间的缓存无效

ASP.NET缓冲是一种能够改进Web应用程序性能的重要特征。事实上,改进一个数据库驱动的Web应用程序性能的最显著的方法正体现在对缓冲机 制的巧妙把握上。在绝大多数情况下,从数据库中检索数据成为你能够实现的最慢的网站操作之一。然而,如果你能够在内存中恰当地缓存数据库数据并且尽可能在 每一次页面请求时避免访问数据库,那么你一定能够显著地改进你的应用程序的性能。

ASP.NET 2.0提供了比ASP.NET 1.x更强的缓冲特征。其中,一个新的特征是,它能够把caching属性指定为数据源控件声明的一部分。ASP.NET 2.0中的这个新的数据源控件能够“无缝”地利用ASP.NET 2.0新的缓冲特征特征,从而使你能够把caching属性设置为SqlDataSource控件声明的一部分。

典型地,你可以通过设置SqlDataSource控件中的下列两个属性来支持缓冲:

◆EnableCaching—通过把这个属性设置为true,你可以启动一个SqlDataSource控件的缓冲功能。

◆CacheDuration—这个属性允许你设置或得到SqlDataSource控件中的缓冲数据的持续时间(这个属性以秒为单位指定)。

作为本文示例,不妨让我们考虑一下Northwind数据库中的categories和products表的情况。它在一个 DropDownList中显示所有的产品种类并在一个GridView控件中显示属于一个特定种类的产品。首先,让我们使用Visual Studio 2005创建一个新的网站,并命名为Caching。然后,把一个Web页面TimeBasedCaching.aspx添加到其中。最后,按如下所示修 改TimeBasedCaching.aspx文件中的代码:


 

在上面的代码中,到数据库的连接字符串是从web.config文件中检索的。这个web.config文件包含下列connectionStrings元素:

现在,既然要求的连接字符串已经在web.config文件中定义,那么,SqlDataSource控件就能够借助于下列声明来使用这个连接字符串:

上面的代码检索定义在Northwind连接字符串元素的connectionString属性中的连接字符串值。

SqlDataSource控件还要把EnableCaching属性设置为true,这样会使SqlDataSource自动地缓冲通过 SelectCommand检索的数据。这个CacheDuration属性能够使你指定(以秒为单位)在数据从数据库中刷新之前应该被缓冲多长时间。默 认情况下,SqlDataSource将使用一种绝对过期策略来缓存数据;这意味着,数据每隔在CacheDuration属性中指定的秒数刷新一次。

你还可以选择性配置让SqlDataSource使用一种“滑动式”过期策略。通过这种策略,只要数据继续被存取,它就不会被删除。当你有大量需要 被缓冲的项时,使用滑动过期策略非常有用,因为该策略能够使你在内存中仅保持被最频繁访问的项。在上面的示例中,通过分别把EnableCaching和 CacheDuration属性设置为True和10,你缓冲SQL查询结果的时间期限为10秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值