·网站首页·联系我们·在线留言
东莞网站建设
东汇设计 网站建设 成功案例 网站优化 网站推广 网络营销 域名注册 虚拟主机 网站建设知识
 
  网站建设知识  
  东汇服务热线:13650104846  
  网站域名  

  虚拟主机  

  网站设计  

  网页配色  

  动画设计  

  网站维护  

  程序asp  

  程序asp.net  

  程序php  

  程序jsp  

  韩国网站分析  

 
 
  您现在位置:东莞网站建设 >> 东莞网站建设知识 >> 程序asp >> 正文
Asp性能优化试探
发布日期:08-07-21 14:36:26  点击次数:[]  不详

Asp脚本注意问题
VB动态链接库DLL或者通过先进的Windows编程语言或适当的COM 接口语言将它转换成未编译组件?并且在服务器端注册它们。对一个写得好的ActiveX 组件进行编译不但能大幅度提高性能,还可以保护你的软件(脚本),尤其当你将你的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 终止或超时前一直被
占用。这样,如果很多用户同时使用你的程序的时候,你的服务器资源可能会耗尽。

数据库访问
    数据库访问是必须的麻烦?访问数据库将会激烈地减慢你的程序,但很显然,如果没有数据库,很
多站点将变得毫无价值可言。但通过存储过程访问数据库来代替使用嵌入式Sql 语句,你可以提升潜在
的性能。通过使用存储过程和ActiveX Data Objects (ADO),它们亦同样拥有良好的灵活性。尽可能从
存储过程来输出数据。

    确认你的数据库具有索引,因为这样能直接提高你的程序的效率。同样,尽量在你的数据库服务器
运行更新统计(Update Statistics) 以帮助追踪你的数据分发,这样,你的数据库就能够基于这些信息
来改造查询执行。注意一些数据库比如MS Access,是不是真正能在企业级程序中接受?SQL Sever 7.0
或者Oracle是一个更好的赌注。
    让SQL象它被设计的那样工作,它能count(统计),连接(join),排序(sort)和group 数据。当你能
够写出一个查询语句来做这些东西的时候,就不要自己用其它语言来实现。
    下面是一个统计所有列的最简单的语法:

    SELECT count(*) FROM publishers WHERE state='NY'

    如果你统计一个指定的列,你必须使用group by语句来分组该列,否则它不会工作:

    SELECT count(city),city FROM publishers GROUP BY city

    分类返回的数据:

    SELECT * FROM TableName WHERE FieldName>50 OR FieldName<100 ORDER BY FieldName2, Field
Name3

    使用Odbc还是文件DSN连接数据库?使用快速的OLEDB Provider技术连接你的数据库而不是使用DSN
连接。不再需要恳求你的ISP(或数据库管理员/网管)为你建立一个系统DSN,当你移走Web文件的时候,
亦不需要改变配置。

    OLEDB 介于ODBC层和应用程序之间。在你的ASP 页面中,ADO介于ODEDB之上的“应用程序”。你的
ADO调用首先被送到OLEDB,接着被送到ODBC层。然而,你可以直接连接到OLEDB 层,并且如果你这样做
的话,你就能看到服务器端性能的提高。然而,怎样直接连接到OLEDB?
   如果你使用SQLServer 7,使用下面的连接代码连接数据库:

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

    最重要的参数是DRIVER=部分。如果你要绕过ODBC而使用通过使用OLEDB 连接SQL Server(这是更快
的连接),请使用下面的语法:

    strConnString ="Provider=SQLOLEDB.1;Password=mypassword;" & _
                   "Persist Security Info=True;User ID=myuid;" & _
                   "Initial Catalog=mydbname;" & _
                   "Data Source=myserver;Connect Timeout=15"

    有什么不对的地方吗?
    现在你可能会觉得有点奇怪:我们在这个新的连接方法中的要点是什么呢?为什么不使用标准DSN-
less/System DSN途径?呵,根据Wrox 在他的著作《ADO 2.0 Programmer's Reference》中测试的结果
表明,如果你使用OLEDB连接和DSN或者DSN-less连接方法比较,你会发现有下面的改进:

    性能对比:
    SQL Access
                     OLEDB   DSN                      OLEDB    DSN
           连接时间:  18     82             连接时间:  62     99
查询1,000条记录时间:2900   5400  查询1,000条记录时间: 100    950

    注释:这个结果在Wrox的《ADO 2.0 Programmer's Reference》一书的第232和233页可以查到。时
间的单位是毫秒,查询1,000记录时间是通过服务器端游标计算出来的(当使用客户端游标的时候,OLED
B与DSN记录集的性能之间的差别不大)。
 ASP译码问题:
    尽可能在客户端确认用户输入来减少HTTP来回请求的数量。如果浏览器有支持JavaScript或其它脚
本的能力,使用它们的力量以释放更多的服务器资源。
    下面的VBScript运行于客户端浏

9 7 3 1 2 4 8 :

上一页:    下一页: 

 
 
网站导航:
网站首页|东汇设计|网站建设|网页制作|成功案例|网站优化|网站推广|域名注册|虚拟主机|企业邮局|网络营销|网站建设知识|联系我们|在线留言|网页设计

东莞网页制作 地址:东莞市南城区体育路嘉信大厦(皇胜酒店对面)4F16室 版权所有:东莞网站建设服务商-东莞市东汇设计网络公司
电话:076922064003 手机:13650104846 13559782770