喜欢本站并加入收藏
首 页 电脑学园 技术文档 图形图像 办公应用 网页设计 管理资料 PPT模板 方案合同
 位置: 北方教程网 >> 网页设计 >> Asp专题 >> 正文
   优化Asp程序的性能的方法及技巧
优化Asp程序的性能的方法及技巧
[ 作者:佚名   来源:网络整理   点击数:   更新时间:2007-5-22 ]

我们没有任何办法控制用户的带宽,但我们的确能通过优化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
  %〉
  〈LI〉〈%=RS("Name")%〉: 〈A HREF=""〉Homepage〈/A〉
  〈%
  RS.MoveNext
  WEND
  %〉
  〈/BODY〉
  〈/HTML〉

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

以下是引用片段:
  〈%
  If Not Session("DBOpen") Then
  %〉
  〈H1〉Database not connected〈/H1〉
  〈%
  Else
  %〉
  〈H1〉Database open〈/H1〉
  〈%
  End If
  %〉

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

以下是引用片段:
  〈%
  If not Session ("DBOpen") Then
  Response.Write "〈H1〉Database not connected〈/H1〉"
  Else
  Response.Write "〈H1〉Database open〈/H1〉"
  End If
  %〉

  

[1] [2] [3]  下一页

上一篇文章: ASP实现IE地址栏参数的判断方法 下一篇文章: 详解ASP上传图片到数据库
打印此文  收藏此页  关闭窗口  返回顶部
 相关文章  热点文章
 · 利用CSS改进网站设计的小技巧
 · Dreamweaver快捷操作技巧集锦
 · 使用Dreamweaver架设网站简明教程
 · 网页设计制作过程中常用的几个代码技巧
 · 高效使用CSS编码的方法
 
热点图文
教你节省Vist...
使用Windows ...
 · 远程管理Web服务器的方法技巧
 · Win Vista系统自带IIS7.0设置详解...
 · 详解Windows系统IIS6.0功能及应用...
 · 服务器集群系统实现方法及案例分...
 · IIS服务器实现asp,cgi和php+mysq...
 · IIS下SQL Server数据库安全设置技...
推 荐 阅 读
巧用Photosho...
Photoshop鼠绘...
 · Fireworks制作旋转的漂亮gif动画...
 · Photoshop制作都市满天繁星
 · Fireworks制作Menu按钮
 · 巧用Photoshop制作喜迎奥运壁纸
 · 巧用Photoshop钢笔工具绘制彩色美...
 · Photoshop制作浪漫动感花朵
 设为首页 - 加入收藏 - 关于本站 - 联系我们 - 广告合作 - 友情链接 - 在线交流 - 
CopyRight© 2006-2009 Eduai.Com All Rights Reserved
在线交流 QQ:524152258 辽ICP备07001851号
免责声明:本站部分资源来自网络,如有侵犯您的版权请通知,我们立即删除。