虽然网页发展的首要目标是功能性,但是性能似乎也紧随其后,位居第二。因为,毕竟一个站点,即使功能再强大,如果不能使用的话,也没有任何意义。对经常访问网页的数据进行缓冲毋庸置疑是影响一个网页应用性能的一个方面。 ASP.NET 中包括的缓冲支持特性,可以很简单地融入你的网页应用中,从而提升其性能。
ASP.NET 1.x 提供了三种方式将缓冲融入网页应用中:
在这篇文章中,我将集中讨论页面输出缓冲。
当整个页面内容相对静止适合缓冲时,这样页面就可以进行输出缓冲。 缓冲经常访问网页的数据会增加巨大的通过量。它的运作方式是利用缓存里的所有后续请求来动态生成原始页面的请求。其结果是这种负荷较大的应用程序会获得性能的巨大提高。
缓冲一个网页的主要难题是有效期。它决定了网页内容在从原始资料重新加载之前,能够在缓存中保留的时间。它可以通过代码或者页面级输出缓冲指令 OutputCache 进行访问。它包括了用来指定页面缓冲时间(以秒计)的 Duration 参数。除了 Duration 之外,输出缓冲指令还包括以下属性:
经常用到的关键元素是 Duration 和 VaryByParam ,后者使你能够在不同参数基础上创建不同的页面级缓存。
列表A 中是一个在页面级缓冲一个用 C# 编写的页面的基本方法,它会从历史悠久的 SQL Server Northwind 数据库加载员工资料。
因为资料相对静止,所以被缓冲了 5 分钟。 列表B 中是与之相对应的 VB.NET 代码。
在没有指定参数的情况下出现数据是很少见的。 列表C 中的页面用参数 VaryByParams 为特定用户缓冲了员工资料(通过员工标识查询字符串值 employeeidQueryString 来指定)。
列表D 中是与之对应的 VB.NET 代码。
运行的结果是对每一个 employeeidQueryString 参数进行了页面数据缓冲。如果有大量的员工请求,这会导致在内存中产生大量数据,但是它只被缓冲了 1 分钟。如果你的应用程序中有多个参数,那么你应该在 VaryByParam 参数中把它们用逗号隔开。
在前面的例子中包括了两种最常见页面输出缓冲的应用方法,但是(如参数列表所示),根据你应用方式的不同,还可以用许多可用的备选项。
虽然通过页面响应时间提高应用程序的性能是缓冲的一大特色,你还是应该在适当的时候使用它,因为在应用中使用缓冲是以消耗网络服务器资源为代价的。被缓冲的项目都保存在网络服务器的内存中,但是内存空间是有限的,所以一旦你滥用缓冲,它可能被消耗殆尽。当然,在系统内存被消耗完时,缓冲内容将被清除,以保证系统正常运行。综上所述,你应该明智地使用 ASP.NET 的缓冲技术。
ASP.NET 的最近一次更新是建立在其 1.x 版本提供的缓冲技术特色上的。 ASP.NET 2.0 通过为数据库提供触发式缓冲失效功能使缓冲技术得到了扩展。这样就使你能够很容易地将缓冲项目与数据库中的变化保持同步。同时,它还适用于声明性和自动输出缓冲,以及 Cache API 和 SqlCacheDependency 对象。我将在今后的文章中更详细地探讨这一点。
用户将页面的响应时间作为认同网页应用的首要标准,他们期望加载时间能够尽可能短。开发者努力使网页具有能被人接受的响应时间。 ASP.NET 提供了多样的页面和数据选项弥补了这一点,减少了数据调用的次数,从而缩短了加载时间。
Tony Patton 的职业生涯开始于应用程序开发员,并已经获得了代表其专业水平的 Java 、 VB 、 Lotus 和 XML 认证。