当我们用ASP(Active Server Pages)设计网络应用程序的时候,会面临一个非常重要的问题。那就是:如何提高系统运行效率,提高用户响应速度,使ASP程序能够具有更好的性能。为了避免由于性能问题而影响网站的商业计划,我们在平时编写ASP程序时就应该养成良好的编程习惯。本文将介绍一些提高ASP程序性能的编程技巧。
1.不要在Global.asa中放置空的Session_OnStart 和 Session_OnEnd方法。如果你不需要这些方法,就完全删除方法声明,因为即使方法声明里面没有代码,系统还是要消耗解释时间的。
2.用<OBJECT>标记来实例化对象。Server.CreateObject语句将立即创建对象,如果以后并不使用该对象,则导致资源浪费。而<object>只是声明该对象,在第一次使用时才真正创建它。如果你想在Global.asa中引用一个不一定在所有的ASP页中使用的对象时,使用<object runat=server id=objname>标记定义比用Server.CreateObject方法定义更为合适一点。
3.在检验用户输入数据的有效性时,多使用客户端的数据验证。实现这一点,要求我们熟悉客户端Java和VBscript脚本编写,这样可以减少数据传送的次数,提高传输效率,在一定程度上减轻服务器工作量。
4.避免使用可变数组。在数组初始化的时候就设置好它可能的最合适的大小。也许这样做会产生部分内存的浪费,因为程序常常没有用完你开始申请的所有内存,但你已经确实换取了速度的提升。
5.打开Option Explicit开关。该指令强制使用任何变量之前必须显式地定义该变量,否则导致错误提示。一方面这将有助于调试程序,因为它消除了输入错误的可能。另外,存取已定义变量比未定义的变量快。因为ASP每次是用名字来引用未定义变量,用序号来引用已定义变量(每个已定义变量有一个序号)。用了Option Explicit来强制变量定义,就保证了所有的变量都是已定义的,访问速度自然就加快了。
6.当ASP页面多次访问一个数据对象时,应该将此数据放到一个本地变量中,尤其是Form和QueryString数据。例如,你的页面将多次处理传递来的一个叫Username的QueryString变量,则应该在ASP程序开始处就将Username的值赋给一个本地变量,之后可引用该本地变量来替代Request("Username"),以避免发生多次COM调用。
7.使用代码<% Response.Buffer = True %>打开“响应缓冲”。打开“响应缓冲”可以缓冲整个页面的输出,这样可以减少向浏览器写的次数,提高总体性能。另一方面,TCP/IP协议发送少量的大块数据比发送多次的小块数据效率更高。
8.在IIS 5.0中使用Server.Transfer代替Response.Redirect。Redirect强制产生新的页面请求,结果使浏览器和Web服务器之间进行两次交互。而Server.Transfer直接把运行权交给同一个服务器上的另一个页面,避免了额外的浏览器到Web服务器的交互。
9.避免使用服务器端变量。访问服务器端变量操作将导致服务器得到一个特殊请求,该请求搜集所有的服务器端变量,而不仅仅是你所要访问的,因此会浪费服务器操作时间。
10.对资源晚获取、早释放。通常情况下,晚获取和早释放资源总能在一定程度上避免资源竞争,缓解资源紧张度。因此应该及时关闭打开的记录集以及数据库连接等对象。例如使用完一个Recordset对象后,应该立即将它释放,而不应该等到页面结束后再释放。
11.多使用局部变量,避免全局变量。在ASP程序中局部变量比全局变量调用更快,因为局部变量不必搜索名字空间。