精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>asp.net教程>正文

用 ASP.NET缓冲技术提高Web网站性能


来源:ZDNet China应用开发 时间:07-02-10 点击: 点击这里收藏本文
 

虽然网页发展的首要目标是功能性,但是性能似乎也紧随其后,位居第二。因为,毕竟一个站点,即使功能再强大,如果不能使用的话,也没有任何意义。对经常访问网页的数据进行缓冲毋庸置疑是影响一个网页应用性能的一个方面。 ASP.NET 中包括的缓冲支持特性,可以很简单地融入你的网页应用中,从而提升其性能。

ASP.NET 1.x 提供了三种方式将缓冲融入网页应用中:

  • 页面输出缓冲: 使你能够缓冲动态产生的页面内容。
  • 页面片段缓冲: 缓冲部分网页。
  • 页面数据缓冲: 有计划地缓冲页面内的数据/对象。

在这篇文章中,我将集中讨论页面输出缓冲。

页面输出缓冲

当整个页面内容相对静止适合缓冲时,这样页面就可以进行输出缓冲。 缓冲经常访问网页的数据会增加巨大的通过量。它的运作方式是利用缓存里的所有后续请求来动态生成原始页面的请求。其结果是这种负荷较大的应用程序会获得性能的巨大提高。

缓冲一个网页的主要难题是有效期。它决定了网页内容在从原始资料重新加载之前,能够在缓存中保留的时间。它可以通过代码或者页面级输出缓冲指令 OutputCache 进行访问。它包括了用来指定页面缓冲时间(以秒计)的 Duration 参数。除了 Duration 之外,输出缓冲指令还包括以下属性:

  • Location: 缓存的位置。有效数值包括 Any Client Downstream None Server 、和 ServerAndClient 。缺省值为 Any
  • CacheProfile: 与网页有关的缓存设置的名称。是一个可选元素,没有缺省值。
  • NoStore: 用来表示是否阻止敏感数据的进行二级存储的逻辑值。
  • Shared: 决定用户控制输出是否能够被多个页面共用的逻辑值。
  • VaryByCustom: 用来表示自定义输出缓冲要求的文本。
  • VaryByHeader: 用来改变输出缓存的、用分号隔开的 HTTP 标头列表。
  • VaryByParam: 用来改变输出缓存的、用分号隔开的字符串列表。

经常用到的关键元素是 Duration VaryByParam ,后者使你能够在不同参数基础上创建不同的页面级缓存。

这些参数和与 HTTP GET 请求一起发送的查询字符串相对应,或者和与 HTTP POST 请求一起发送的参数构成新的参数。当该属性被设置成多个参数时,输出缓冲中就包括了不同的、用于每个指定参数组合的被请求文本。可能出现的值包括无( none )、星号( * ),以及任意一个有效的查询字符串或者 POST 参数名。

列表A 中是一个在页面级缓冲一个用 C# 编写的页面的基本方法,它会从历史悠久的 SQL Server Northwind 数据库加载员工资料。

因为资料相对静止,所以被缓冲了 5 分钟。 列表B 中是与之相对应的 VB.NET 代码。

在没有指定参数的情况下出现数据是很少见的。 列表C 中的页面用参数 VaryByParams 为特定用户缓冲了员工资料(通过员工标识查询字符串值 employeeidQueryString 来指定)。

列表D 中是与之对应的 VB.NET 代码。

运行的结果是对每一个 employeeidQueryString 参数进行了页面数据缓冲。如果有大量的员工请求,这会导致在内存中产生大量数据,但是它只被缓冲了 1 分钟。如果你的应用程序中有多个参数,那么你应该在 VaryByParam 参数中把它们用逗号隔开。

在前面的例子中包括了两种最常见页面输出缓冲的应用方法,但是(如参数列表所示),根据你应用方式的不同,还可以用许多可用的备选项。

谨慎处理

虽然通过页面响应时间提高应用程序的性能是缓冲的一大特色,你还是应该在适当的时候使用它,因为在应用中使用缓冲是以消耗网络服务器资源为代价的。被缓冲的项目都保存在网络服务器的内存中,但是内存空间是有限的,所以一旦你滥用缓冲,它可能被消耗殆尽。当然,在系统内存被消耗完时,缓冲内容将被清除,以保证系统正常运行。综上所述,你应该明智地使用 ASP.NET 的缓冲技术。

ASP.NET 2.0

ASP.NET 的最近一次更新是建立在其 1.x 版本提供的缓冲技术特色上的。 ASP.NET 2.0 通过为数据库提供触发式缓冲失效功能使缓冲技术得到了扩展。这样就使你能够很容易地将缓冲项目与数据库中的变化保持同步。同时,它还适用于声明性和自动输出缓冲,以及 Cache API SqlCacheDependency 对象。我将在今后的文章中更详细地探讨这一点。

感觉代表一切

用户将页面的响应时间作为认同网页应用的首要标准,他们期望加载时间能够尽可能短。开发者努力使网页具有能被人接受的响应时间。 ASP.NET 提供了多样的页面和数据选项弥补了这一点,减少了数据调用的次数,从而缩短了加载时间。

Tony Patton 的职业生涯开始于应用程序开发员,并已经获得了代表其专业水平的 Java VB Lotus XML 认证。


  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.