最大限度优化你的Asp性能

精贴 置顶
1840 0

    ASP 能快速执行你的动态网页,但你还可以通过紧缩代码和数据库连接以使它们执行更快。这是一篇关于怎样精简代码和Asp 特征以获得最快执行速度的详细文章。对于一个急燥的用户来说,任何在按下用户按钮到结果出现在它们的屏幕之间的延迟可能意味着它们会转到浏览其它的站点?假如你的是商业站点,这有可能意味着失去潜在的销售。
我们没有任何办法控制用户的带宽,但我们的确能通过优化Asp 站点来获得最佳的性能。大部分潜在性能的提升是通过系统改变而不是紧缩代码,一个不合适的想法是,一旦遇到系统效率问题,就向系统管理者提意见要其升级系统。
    首先,哪个因素可能影响Asp的性能?很不幸,有很多因素?下面这些只是其中的一部分:

    可用带宽
    服务器上的处理器和其它硬件的速度
   在服务器上运行的其它程序(比如象那些OpenGL屏幕保护程序!)
   数据库连接模式,连接池,数据库系统本身(比如Oracle优于Sql Server,Sql server优于Access)
   所使用的语言
   存储过程优于行式Sql语句
   使用编译组件而不是VB或JavaScript,好的Asp编程经验,比如错误处理等

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

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

<!-- #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?'调用过程Main
</SCRIPT>

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

<%
'检查客户端是否仍在连接
If Not Response.IsClientConnected Then
'仍然连接着,处理程序
Else
'断开
End If
%>

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

<HTML>
<BODY>
<%
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
%>

  • 没有任何评论
今日天气 ···

···

···

···

热门排行
用ASP实现网页BBS 2010-11-01
CSS cursor鼠标样式一览表 2012-06-25
.NET后台写JS代码 2011-11-03
网站地址多出jdfwkey的问题解析及... 2010-08-25
数据库xxx的日志已满,请备份该数... 2013-07-19
百度、google、Yahoo网站地图制作... 2011-01-30
<a>标签的伪类书写顺序问题... 2010-09-04
什么是长尾关键词? 2010-09-24
CEO名言 2010-08-31
Mysql 主从数据库同步 2010-09-12
博主推荐
本个人博客微信公众平台上线啦~~... 2013-10-13
饼哥网络互联上线啦~~要买域名空... 2013-09-20
网站title标题如何正确修改不会被... 2013-08-26
饼哥通讯录系统上线啦,欢迎大家... 2013-08-24
ASP .NET MYSQL 的简单分页 并不... 2013-08-19
网站有弹窗广告这样的站点,百度... 2013-08-17
做淘宝SEO优化需要注意的8大问题 2013-08-17
淘宝网怎么做SEO优化 2013-08-17
站长们要学习的“苍井空精神” 2013-08-17
苹果公司今日发布了iOS 7第五个开... 2013-08-07
随便看看
日志中的HTTP状态码都代表什么? 2010-09-08
Java语言将淡出 JVM宝座争夺战预... 2013-06-26
目前中文互联网上有少量spider冒... 2013-06-23
ASP开发10条经验总结 2010-10-23
Android和iOS平台之战并没有赢家 2013-06-27
关键词放在什么位置最好? 2010-09-21
关键词叠加 2010-09-21
Tencent://Message/协议的实现原... 2010-09-07
在服务器端控制网页 2010-11-01
网站被黑的10大原因 2010-10-15
RSS新闻
传媒新闻
CSDN
八卦新闻
女性新闻
台湾新闻
互联网
军事-新浪博客
IT-新浪博客
汽车新闻
游戏新闻
国际新闻
国内新闻
体育新闻
我的微博
北京 上海 杭州 深圳 广州 成都