1.将经常使用的数据缓存在 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
%>
2.将代码封装在 COM 对象中
如果你的Web应用程序中有许多 VBScript 或JScript代码,你可以经常将代码移到编译的 COM 对象中,从而可改善性能。将代码封装在 COM 对象中还有一些除提高性能之外的其他优点:
(1)COM 对象有利于将表示逻辑与业务逻辑分开;
(2)COM 对象可以保证代码重复使用;
(3)用VB、VC++ 或 Visual J++ 编写的代码比 ASP 更容易调试。
COM对象也有缺点,包括初始化时间长和需要不同的程序设计技巧。值得注意的是,在少量ASP代码被封装进 COM 对象时,可能不会使性能有所改进,反而会引起性能下降。这种情况通常是创建和调用 COM 对象的系统开销超过了编译代码的系统开销。因此,我们需要反复地试验,以确定什么样的 ASP 脚本和 COM 对象代码的组合可以产生最好的性能。
3.处理内嵌脚本和Response.Write语句
VBScript 语法的<% = expression %>是将“expression”的值写到ASP输出流中。如果响应缓冲未启用,那么执行其中的每一条语句都会以许多小的数据包通过网络将数据写到浏览器中。这样,执行速度很慢,而且穿插执行少量的脚本和 HTML,将会引起脚本引擎和 HTML 之间的切换,从而极大地降低了性能。因此,我们可以使用下面的技巧,即使用 Response.Write 调用代替捆绑紧密的内嵌表达式。
例如,在下面的示例中,在每一行的每一字段对响应流有一次写操作,每一行在 VBScript 和 HTML 之间有多次切换: