我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp技巧/优化 > 最大限度优化你的Asp性能——已经译成中文
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

最大限度优化你的Asp性能——已经译成中文 

作者:佚名   来源:本站教程   点击:   日期:2007-03-22

最大限度优化你的Asp性能
    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找到。对一个写得好的Activ
eX 组件进行编译不但能大幅度提高性能,还可以保护你的软件(脚本),尤其当你将你的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
    %>

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

    Session状态
    无庸置疑地,在Asp中能够通过Session维持某个状态的能力是十分强大的特色。然而,它会影响你
的性能。明显地,你的站点的可伸缩性性变成了另一个问题,如果限制Session的使用的话。然而,ses
sion会为每个用户消耗服务器资源。
    如果你不使用session 变量,或事实上你不必使用?使用隐藏表单域,在数据库中保存数据,查询
字符串是不是其中的窍门?所以你应该禁止Session状态。你可以使用下面的声明禁止使用session:

    @EnableSessionState = False

    这样,ASP将不再检查session信息。

    如果你不得不依赖于session状态,应该避免在session对象中存放大量的数据。IIS中的session在
客户端的HTTP cookie可用的时候就会保持,导致被session占用的内存在session 终止或超时前一直被
占用。这样,如果很多用户同时使用你的程序的时候,你的服务器资源可能会耗尽。
<

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。