安大互联
财经热点 > Asp编程 > 两个ASP的性能优化实用方法
两个ASP的性能优化实用方法
浏览次数:【752】  发布日期:2009-8-13 12:09:22    文章分类:Asp编程   
专题:】 【
 
1.讨论主题:ASP脚本大小

你的脚本页(还有其它页面)是不是比务必的长度要长?
这是一开始执行就会降低Asp性能的东西。ASP脚本在用来获取信息和格式化输出的时候是十分有用的,但脚本也是逐行解释执行,所以你的脚本越长,执行它的时间也就越长。

假如你的脚本很庞大,怎么做才能减少脚本的长度呢?
这里有几点建议:
你可以将它们转化成服务器端组件,说白了,做成VB动态链接库DLL或通过顶尖的Windows编程语言或适当的COM接口语言将它转化成未编译组件?并且在服务器端注册它们。相关的快速指南可以在找到。对一个写得好的ActiveX组件进行编译不仅能大幅度提高性能,还可以保护你的软件(脚本),尤其当你将你的Asp站点发布在第叁方主机上的时候。
因为脚本是逐行解释执行的,所以剔除多余的脚本或建立更高效率的脚本能够改进性能。假如你在单个Asp文件中有数百行的代码,可能这样做你能很好地划分使用者,买卖和数据服务。其实,假如你这样做,可能会找出一些冗余的代码:假如你需要输出几个表格,你可以编写一个通用函数来输出一个表格,只是屡次调用它。
在讲述Asp脚本的大小问题的时候,不得不提及包含文件的大小。当你使用一个包含文件的时候,整个包含文件被装入,当包含文件被包含的时候,相当于在Asp文件本身写下那部分代码。因此,假如你在一个冗长的包含文件里定义了很多通用的要领和定义,要理解到在你包含该文件的时候,不管你要不要用到里面的每个方法和定义,它都是被整个装入的。ASP缓存全部的展开代码,这会降低查找效率在这种情景下,包含文件务必被分割成更小的,模块化的文件。也要理解到包含文件被服务器视为单独的页面请求,使用太多的包含文件会影响下载时间。

<!--#includefile="Header.asp"-->
<!--#includefile="Footer.asp"-->
<SCRIPTlanguage="vbscript"runat="server">

SubMain()
WriteHeader
WriteBody
WriteFooter
EndSub

SubWriteBody()
...
EndSub

Main'调用过程Main
</SCRIPT>

假如你的脚本冗长的话,请使用Response.IsClientConnected。这意味着在客户端不再连接到服务
器的时候,你的服务器CPU能避免循环等待。

<%
'检查客户端是否仍在连接
IfNotResponse.IsClientConnectedThen
'仍然连接着,处理程序
Else
'断开
EndIf
%>



使用迅速的O LED BProvider技术连接你的数据库而不是使用DSN连接。不再需要恳求你的ISP(或数据库管理员/网管)为你建立一个系统DSN,当你移走Web文件的时候,亦不用改变配置。
O LED B介于ODBC层和应用程序之间。在你的ASP页面中,ADO介于ODEDB之上的“应用程序”。你的ADO调用首先被送到O LED B,接着被送到ODBC层。然而,你可以直接连接到O LED B层,并且假如你这样做的话,你就能看到服务器端性能的提高。

然而,怎样直接连接到O LED B?
假如你使用SQLServer7,使用下面的连接代码连接数据库:

strConnString="DSN='';DRIVER={SQLSERVER};"&_
"UID=myuid;PWD=mypwd;"&_
"DATABASE=MyDb;SERVER=MyServer;"

最重要的参数是DRIVER=部分。假如你要绕过ODBC而使用通过使用O LED B连接SQLServer(这是更快
的连接),请使用下面的语法:

strConnString="Provider=SQLO LED B.1;Password=mypassword;"&_
"PersistSecurityInfo=True;UserID=myuid;"&_
"InitialCatalog=mydbname;"&_
"DataSource=myserver;ConnectTimeout=15"

有啥不对的地方么?
现在你可能会觉得有点奇怪:我们在这个新的连接方法中的要点是啥呢?为啥不使用标准DSN-less/SystemDSN途径?呵,根据Wrox在他的作品《ADO2.0Programmer'sReference》中测试的结果表明,假如你使用O LED B连接和DSN或DSN-less连接方法比较,你会发现有下面的改进:

性能对照:
SQLAccess
O LED BDSNO LED BDSN
连接时间:1882连接时间:6299
查询1,000条记录时间:29005400查询1,000条记录时间:100950

注释:这个结果在Wrox的《ADO2.0Programmer'sReference》一书的第232和233页可以查到。时间的单位是毫秒,查询1,000记录时间是通过服务器端游标计算出来的(当使用客户端游标的时候,O LED B与DSN记录集的性能之间的不同不大)。
手机扫码浏览该文章
 ● 相关资讯专题
  • 网络建设业务咨询

   TEl:13626712526