好学IT学院:IT信息技术分享交流平台
标签:ASP  来源:互联网  作者:佚名  发布时间:2009-03-27  ★★★加入收藏〗〖手机版
摘要:ActiveServerPages可以让动态页面很快地执行,但是,在代码中和数据库的连接上加入一些技巧,就能让程序更快地执行。这是一篇关于如何精制脚本程序以及ASP特征来达到最大速度的文章。任何在用户点击按钮到在屏幕上出现结果间延迟都会让用户茫然,对于一个商业…

Active Server Pages可以让动态页面很快地执行,但是,在代码中和数据库的连接上加入一些技巧,就能让程序更快地执行。这是一篇关于如何精制脚本程序以及ASP特征来达到最大速度的文章。任何在用户点击按钮到在屏幕上出现结果间延迟都会让用户茫然,对于一个商业站点,这就意味着潜在的用户损失。

ASP脚本的尺寸

我们也许不能控制用户的带宽,但是通过优化ASP站点,我们的确能够使应用达到最佳性能。许多潜在的性能收获可以通过系统调整,而不是改变代码。

因素

首先,有哪些因素可能影响ASP程序的性能?很不幸,有许多吗?这里仅仅是一些:

有限的带宽
服务器端的处理器和其他硬件的速度
在服务器上运行的其他进程(比如那些OpenGL屏幕保护程序中的一个)
数据库连接模式,连接池,或者单独的数据库(比如Oracle、SQLServer、Access)
使用的语言
存储过程和SQL
使用未编译组件,而不是VB或者JavsScript的ASP
良好的编程习惯,比如对错误的处理

对于一个有经验的具备良好IIS知识的开发者来说,以上一些特征是很平常的,但是另外一些可能非常复杂。在这篇
文章中,让我们来研究一下如何做才能节省毫秒级别的时间,而不是试图面面俱到。

你的ASP脚本程序对于实现的功能是否显得过长?这就会从开始影响程序的性能。对于收集信息和格式化输出,ASP脚本是非常有用的,但是脚本是按照行来解释执行的,所以代码越长,执行时间越长。

如果有一个很长的ASP脚本程序,怎么样才能减少长度呢?这里有一些建议。

你可以将它们转换为服务器端组件,换言之,就是创建一个Visual Basic DLL文件,或者使用任何现代的Windows 程序语言和COM兼容语言来建立一个未编译组件,并且在服务器上注册。关于这个功能的教程请参阅http://www.webdevelopersjournal.com/articles/activex_for_asp.html。一个编写很好的ActiveX组件不仅能大幅度提
高速度,而且,它还能大大地提高你的软件的保护程度,特别是你为第3方开发ASP程序时。

因为脚本是一行行解释执行的,所以排除多余的脚本或者建立有效率的脚本,就能提高程序性能。如果在一个单一页面中有成百行的ASP脚本,你就可能很好地将程序分割成用户、商业和数据服务部分。实际上,如果这么做了,你就会发现一些多余的代码。比如,如果需要显示几个表格,就可以编写一个通用的表格显示函数,这样,在需要的地方调用就可以了。

与尺寸相关的另外一个问题就是包含文件的长度。当执行一个#include文件时,整个文件都被调入,就象在被包含的文件中存在一样。所以,如果有一个甬余的包含文件,其中包含了许多全局方法和变量定义,那么就请注意它们将被调入每一个包含它们的文件中,而不管是否可用。ASP缓存了所有的扩展代码,导致了效率低下的搜索。在这种情况下,包含文件必须变小。尽管包含文件被服务器处理为单独的请求,但是过多的使用#include,就会导致下载时间的过度增加。

< !-- #include file="Header.asp" --  >
< !-- #include file="Footer.asp" -- >
< SCRIPT language="vbscript" runat="server" >

Sub Main()
  WriteHeader
  WriteBody
  WriteFooter
End Sub

Sub WriteBody()
  ...
End Sub

Main   'call sub Main
< /SCRIPT >

如果脚本很长,注意要使用 Response.IsClientConnected 命令,这将避免因客户端不再连接时CPU浪费运行循环。

< %
'check to see if the client is connected
If Not Response.IsClientConnected Then
  'still connected so proceed
Else
  'disconnected
End If
% >