锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

微软提高ASP程序性能的28个技巧

时间:2022-09-28 23:30:00 智能压力变送器sta923

技巧 1:缓存常用数据 Web 服务器上
技巧 2:缓存常用数据 Application 或 Session 对象中
技巧 3:将数据和 HTML 缓存在 Web 在服务器磁盘上
技巧 4:避免缓存非敏捷组件 Application 或 Session 对象中
技巧 5:不要将数据库连接缓存 Application 或 Session 对象中
技巧 六、合理使用 Session 对象
技巧 7.密封代码 COM 对象中
技巧 8:资源获取较晚,资源释放较早
技巧 9:过程外执行过程以性能换取可靠性
技巧 10:使用显式选项
技巧 在子例程和函数中使用局部变量
技巧 12:将经常使用的数据复制到脚本变量中
技巧 13:避免重新确定数组的维数
技巧 14:使用响应缓冲
技巧 15:内嵌脚本和 Response.Write 语句
技巧 16:如果页面需要很长时间才能完成,则在执行前使用 Response.IsClientConnected
技巧 17:使用 技巧 18:对于 ADO 使用其它组件 TypeLib 绑定
技巧 19:使用浏览器验证功能
技巧 20:避免在循环语句中使用字符串联
技巧 21:使用浏览器和代理缓存
技巧 22:尽量使用 Server.Transfer 代替 Response.Redirect
技巧 23:在目录 URL 使用后斜杠
技巧 24:避免使用服务器变量
技巧 25:升级到最新和最出色的
技巧 26:优化 Web 服务器
技巧 27:性能测试
技巧 28:阅读资源链接
引言

性能是一个特征。您必须提前设计性能,否则您将来必须重写应用程序。换句话说,什么好的策略可以制定 Active Server Pages (ASP) 最佳应用程序性能?

本文介绍了优化 ASP 应用程序和 Visual Basic? Scripting Edition (VBScript) 的技巧。本文讨论了许多陷阱。本文列出的建议已经存在 http://www.microsoft.com 在其它网站上进行了测试,效果非常显著。假设你已经对了这篇文章 ASP 开发,包括 VBScript 和/或 JScript、ASP Application、ASP Session 和其它 ASP 固有对象(Request、Response 和 Server)基本了解。

通常,ASP 性能主要取决于 ASP 代码本身以外的许多因素。我们没有在一篇文章中列出所有的信息,而是在本文的结尾列出了与性能相关的资源。涵盖了这些链接 ASP 和非 ASP 主题,包括 ActiveX? 数据对象 (ADO)、组件对象模型 (COM)、数据库和 Internet Information Server (IIS) 配置。这些都是我们最喜欢的链接 - 一定要去看看。

技巧 1:缓存常用数据 Web 服务器上
典型的 ASP 页面从后端数据存储中检索数据,然后将结果转换为超文本标记语言 (HTML)。无论数据库的速度如何,从内存中检索数据都比从后端数据存储中检索数据快得多。从本地硬盘读取数据通常比从数据库中检索数据更快。因此,数据缓存通常可以存在 Web 为了提高性能,服务器上(存储在内存或磁盘中)。

缓存是用空间换取时间的传统做法。如果缓存内容正确,可以看到性能会有显著提高。为了使缓存有效,必须保存经常重复使用的数据,重新计算数据需要(适度)大的费用。如果缓存是旧数据,会造成内存浪费。

不经常改变的数据是缓存候选数据,因为你不必担心随着时间的推移与数据库同步。组合框列表,引用表,DHTML 碎片、扩展标记语言 (XML) 字符串、菜单项和网站配置变量(包括数据源名称) (DSN)、Internet 协议 (IP) 地址和 Web 路径)是缓存候选人的好内容。请注意,您可以缓存数据的表示,而不是缓存数据本身。如果 ASP 页面很少变化,缓存费用也很大(比如整个产品目录),要考虑事先产生 HTML,而不是在响应每个请求时重新显示。

数据缓存在哪里,缓存策略是什么?通常,数据缓存 Web 内存或磁盘中的服务器。这两种方法是在下两种技能中描述的。

技巧 2: 将经常使用的数据缓存在 Application 或 Session 对象中
ASP Application 和 Session 对象为内存中的数据缓存提供了方便的容器。您可以指派数据 Application 和 Session 这些数据在对象中 HTTP 内存保留在调用之间。Session 每个用户分别存储数据, Application 在所有用户之间共享数据。

数据何时装载? Application 或 Session 中呢?通常,数据正在启动 Application 或 Session 时装载。要在 Application 或 Session 在启动过程中装载数据时,应单独添加适当的代码 Application_OnStart() 或 Session_OnStart() 中。这些函数应该存在 Global.asa 如果没有,可以添加这些函数。数据也可以在第一次需要时装载。为此,在 ASP 在页面上添加一些代码(或编写一个可重复使用的脚本函数),以检查数据是否存在,如果没有,则装载数据。这是一种传统的性能技术,被称为惰性计算 - 在你知道需要一个值之前,不计算值。例如:

<%
Function GetEmploymentStatusList
Dim d
d = Application(?EmploymentStatusList?)
If d = ?? Then
' FetchEmploymentStatusList function (not shown)
' fetches data from DB, returns an Array
d = FetchEmploymentStatusList()
Application(?EmploymentStatusList?) = d
End If
GetEmploymentStatusList = d
End Function
%>


类似的函数可以为所需的每个数据块编写。

数据应以何种格式存储?可以存储任何变体类型,因为所有脚本变量都是变体类型。例如,您可以存储字符串、整数或数组。通常,您将以这些变量类型之一存储 ADO 记录集的内容。要从 ADO 您可以手动数据,您可以手动复制数据 VBScript 变量,一次一个字段。使用一个 ADO 记录持久函数 GetRows()、GetString() 或 Save()(ADO 2.5),可以加快速度,更容易。其详细信息已超出本文讨论的范围,但以下是函数的例子,说明使用 GetRows() 返回记录集数据的数组:

' Get Recordset, return as an Array
Function FetchEmploymentStatusList
Dim rs
Set rs = CreateObject(?ADODB.Recordset?)
rs.Open ?select StatusName, StatusID from EmployeeStatus?, _
?dsn=employees;uid=sa;pwd=;?
FetchEmploymentStatusList = rs.GetRows() ? Return data as an Array
rs.Close
Set rs = Nothing
End Function


进一步完善以上例子可以 HTML 缓存是列表,而不是数组。以下是一个简单的例子:

' Get Recordset, return as HTML Option list
Function FetchEmploymentStatusList
Dim rs, fldName, s
Set rs = CreateObject(?ADODB.Recordset?)
rs.Open ?select StatusName, StatusID from EmployeeStatus?, _
?dsn=employees;uid=sa;pwd=;?
s = ?