最优化ASP程序性能(转)

2020-12-13 02:28

阅读:639

标签:style   ext   color   http   c   com   


    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,就会导致下载时间的过度增加。



Sub Main() 
WriteHeader 
WriteBody 
WriteFooter 
End Sub

Sub WriteBody() 
...
End Sub

Main ‘call sub Main 

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

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

分散ASP代码和HTML语言命令
有人这么做吗?当描述表格时,在ASP和HTML进行切换,比如:



Set MyConn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("sample.mdb")
MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL_query = "SELECT * FROM Friends"
Set RS = MyConn.Execute(SQL_query)
WHILE NOT RS.EOF
% >
: " >Homepage
RS.MoveNext
WEND
% >


评论


亲,登录后才可以留言!