asp

位置:IT落伍者 >> asp >> 浏览文章

最大限度优化你的Asp程序的性能


发布日期:2023年07月05日
 
最大限度优化你的Asp程序的性能

ASP 能快速执行你的动态网页但你还可以通过紧缩代码和数据库连接以使它们执行更快这是一篇关于怎样精简代码和Asp 特征以获得最快执行速度的详细文章对于一个急燥的用户来说任何在按下用户按钮到结果出现在它们的屏幕之间的延迟可能意味着它们会转到浏览其它的站点?假如你的是商业站点这有可能意味着失去潜在的销售

我们没有任何办法控制用户的带宽但我们的确能通过优化Asp 站点来获得最佳的性能大部分潜在性能的提升是通过系统改变而不是紧缩代码一个不合适的想法是一旦遇到系统效率问题就向系统管理者提意见要其升级系统

首先哪个因素可能影响Asp的性能?很不幸有很多因素?下面这些只是其中的一部分

可用带宽

服务器上的处理器和其它硬件的速度

在服务器上运行的其它程序(比如象那些OpenGL屏幕保护程序!)

数据库连接模式连接池数据库系统本身(比如Oracle优于Sql ServerSql server优于Access)

所使用的语言

存储过程优于行式Sql语句

使用编译组件而不是VB或JavaScript好的Asp编程经验比如错误处理等

一些以上的因素可能已经被有IIS 知识经验的开发者普遍留意到了但其它的可能对于他们来说是十分复杂的问题在这篇文章里 将试着解释所有影响Asp性能的每个因素让我们看一看那些在我们刮胡子的几毫秒内就能做到的主要事情

ASP脚本大小

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

如果你的脚本很庞大怎么做才能减少脚本的长度呢?这里有几点建议

你可以将它们转换成服务器端组件也就是说做成VB动态链接库DLL或者通过先进的Windows编程语言或适当的COM 接口语言将它转换成未编译组件?并且在服务器端注册它们有关的快速指南可以在

l找到对一个写得好的ActiveX 组件进行编译不但能大幅度提高性能还可以保护你的软件(脚本)尤其当你将你的Asp站点发布在第三方主机上的时候

因为脚本是逐行解释执行的所以剔除多余的脚本或建立更高效率的脚本能够改进性能如果你在单个Asp 文件中有数百行的代码可能这样做你能很好地划分使用者买卖和数据服务事实上如果你这样做可能会找出一些冗余的代码如果你需要输出几个表格你可以编写一个通用函数来输出一个表格只是多次调用它

在讲述Asp 脚本的大小问题的时候不得不提及包含文件的大小当你使用一个包含文件的时候整个包含文件被装入当包含文件被包含的时候相当于在Asp 文件本身写下那部分代码因此如果你在一个冗长的包含文件里定义了很多通用的方法和定义要明白到在你包含该文件的时候不管你要不要用到里面的每个方法和定义它都是被整个装入的ASP 缓存全部的展开代码这会降低查找效率在这种情况下包含文件必须被分割成更小的模块化的文件也要明白到包含文件被服务器视为单独的页面请求使用太多的包含文件会影响下载时间

以下是引用片段

〈!#includefile=Headerasp

〈!#includefile=Footerasp

〈SCRIPTlanguage=vbscriptrunat=server

SubMain()

WriteHeader

WriteBody

WriteFooter

EndSub

SubWriteBody()

EndSub

Main?调用过程Main

〈/SCRIPT〉

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

以下是引用片段

〈%

检查客户端是否仍在连接

IfNotResponseIsClientConnectedThen

仍然连接着处理程序

Else

断开

EndIf

%〉

Interspersing ASP and HTML

每个人都这样做?当我们输出表格的时候我们会在ASP 和HTML代码间转换而这是一个不好的习惯例如

以下是引用片段

〈HTML〉

〈BODY〉

〈%

SetMyConn=ServerCreateObject(ADODBConnection)

MdbFilePath=ServerMapPath(samplemdb)

MyConnOpenDriver={MicrosoftAccessDriver(*mdb)};DBQ=&MdbFilePath&;

SQL_query=SELECT*FROMFriends

SetRS=MyConnExecute(SQL_query)

WHILENOTRSEOF

%〉

〈LI〉〈%=RS(Name)%〉:〈AHREF=〉Homepage〈/A〉

〈%

RSMoveNext

WEND

%〉

〈/BODY〉

〈/HTML〉

另一个普遍的例子是使用IF语句的时候

以下是引用片段

〈%

IfNotSession(DBOpen)Then

%〉

〈H〉Databasenotconnected〈/H

〈%

Else

%〉

〈H〉Databaseopen〈/H

〈%

EndIf

%〉

在这些情况下脚本性能能通过将服务器端脚本写到一起来而用Responsewrite产生Html代码来提高性能比如

以下是引用片段

〈%

IfnotSession(DBOpen)Then

ResponseWrite〈H〉Databasenotconnected〈/H

Else

ResponseWrite〈H〉Databaseopen〈/H

EndIf

%〉

在大的脚本和很多脚本的情况下你将能看到性能的提高注意这里尽量避免了使用〈%标记这样就能提高性能ASP不需在执行脚本的时候计算字符的Ascii码

上一篇:ASP防注入之解决方案--加强版

下一篇:ASP内建对象速查卡