设为首页
加入收藏
帮助中心
首页 | 红盾通告 | 信息中心 | ASP技术 | 数据库 | 网页设计 | 网管专栏 | OICQ攻略 | 墨客频道 | 网站运营 |
当前位置:首页 >> ASP技术 >> 性能优化 >> 正文
最新信息
·ASP 中健壮的页结构的异常…
·Url ReWriting 示例
·改进 ASP 应用程序中的字符…
·关于"&"运算符效率低下的问…
·加速ASP程序的显示速度
·对你的ASP程序作负载测试
·ASP提速技巧五则
·用数据绑定实现高效率动态…
·不用 EOF 以加快记录循环
·对《在ASP中改善动态分页的…
资料搜索
热点信息
·加速ASP程序的显示速度
·ASP特殊字符过滤
·asp内存和速度优化
·微软建议的ASP性能优化28条…
·提高ADO性能的优秀经验
·asp性能测试第二部分(十一…
·改善ASP性能和外观的技巧集…
·ASP提速技巧五则
·如何增强ASP程序性能(4)
·Asp编码优化技巧8则
推荐信息
·改进 ASP 应用程序中的字符…
·提高ASP性能的最佳选择
·微软建议的ASP性能优化28条…
·asp内存和速度优化
·ASP特殊字符过滤
·提高ADO性能的优秀经验
·ASP实用技巧28则
·加速ASP程序的显示速度
·ASP中使用Session变量的优…
·优化你的ASP程序


Google
 
最优化ASP程序性能(二)
〖编辑:Cloudy | 浏览:人次〗

数据库访问

   存取数据库将会很快地减慢程序,但是没有数据库,许多站点也不行。不要使用内植的SQL语句来存取数据库,你可以通过使用存储过程来访问数据库,这将会赢得很大的程序性能,而且,也非常得灵活。使用存储过程,并配合ActiveX Data Objects(ADO),就能最大程度地控制存储过程如何输出。

   确认数据库经过了索引,因为这将直接影响到应用程序的整体性能。同时,注意在数据库上运行更新统计程序,从而更好地跟踪数据的分布。注意,一些数据库,比如MS Access,不适于企业级应用,而SQL Server 7.0或者Oracle更适于做这些。

   让SQL做设计好的工作,包括对数据进行计算、加入、排序和分组。不要用其他语言写这些功能,可以编写一个查询来完成。

   任何要计算的字段就是下面所示的简单语法:

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

   如果要计算一个特殊字段,必须先按那个字段分组,否则,将不会工作:

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

   接着确定排序方法:

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

   仍然使用ODBC系统或者文件DSN来连接数据库,或者使用很快的OLEDB技术来连接。使用后者,当移动Web文件时,不再需要修改配置。

   OLEDB位于应用程序与ODBC层之间。在ASP页面中,ADO就是位于OLEDB之上的程序。调用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或者系统DSN方法?好,根据Wrox在他们的ADO 2.0程序员参考书籍中所做的测试,如果使用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程序员参考发表。时间是以毫秒为单位,重复1,000个记录的时间是以服务器油标的方式计算的。

   ● 只有可能,就使用客户端脚本对用户输入进行验证,以此来最小化HTTP请求的循环操作。

   如果浏览器具备执行JavaScript或其他脚本的能力,请充分应用,从而解放服务器端的资源。

   下面的VBScript脚本在用户的浏览器端运行,检查用户信息,然后再提交给服务器:

< SCRIPT LANGUAGE="VBScript" >
< !--
Sub btnEnter_OnClick
  Dim TheForm
  Set TheForm = Document.MyForm
  If IsNumeric(TheForm.Age.Value) Then   
    TheForm.submit
  Else
    Msgbox "Please enter a numerical age."
  End if
End Sub
//-- >
< /SCRIPT >

< FORM  method="POST" name=MyForm  action="myfile.asp"   > 
   Name: < INPUT typr="text" name="Name"  >
   Age: < INPUT type="text" name="Age"  >
   < INPUT type="button" name="btnEnter"  value="Enter" >
< /FORM >

   ● 使用局部变量,而不要使用全局变量

   因为局部变量可以很快地被ASP脚本引擎所存取,整个名字空间不必被搜索。避免重定义数组,在数组初始化时就分配足够的尺寸,会大大地提高效率。这么做可能浪费一些内存,但是确赢得了速度,尤其是在服务器有很大的负载时。

   ● 使用< OBJECT > 标记创建对象

   如果需要引用一个实际上可能不被使用的对象,使用< OBJECT >标记来例示它们,而不要用Server.CreateObject。后者将导致对象立即被创建,而< OBJECT >是当对象被首次引用时才被创建。

   比如,下面的代码演示了使用< OBJECT >标记来创建一个应用程序范围内的AD Rotator对象实例:

< OBJECT runat=server scope=Application id=MyAds progid="MSWC.AdRotator" >
< /OBJECT >
   然后,就可以在其他页面引用它:

   ● 打开“Option Explicit”

   在VB和VBScript中,你可以不用明确地定义就使用变量。但是打开“明确定义变量”选项,将有助于提高程序性能。未定义的局部变量是很慢的,因为在变量创建前,整个的名字空间都要搜索,看看是否变量已经存在。所以,请打开“Option Explicit”,这是一个好的编程习惯。

   ● 慎用 Server.MapPath

   除非必须,不要使用Server.MapPath!相反,如果知道路径,就使用明确的文字路径来表示。使用MapPath,将要求IIS去取回当前服务器路径,这意味着对IIS一个特殊的请求,从而降低了程序性能。另外的完成这个工作的方法是在局部变量中保存路径信息,当需要使用它时,服务器就不用再被过度请求。

   检查怎样做

   你可以通过下面的工具来测算服务器性能:Task Manager,NetMon 和 PerfMon。用WCAT (Web Capacity Analysis Tool)测量服务器的容量。你可以使用WCAT来检查Internet信息服务和网络配置如何响应不同的客户端对内容、数据和HTML页面的请求。测试的结果可以被用来决定如何最优化服务器和网络配置。

   通过最优化ASP应用程序性能,Web站点应用将会变得很快,最终做到:当不需要时,就不需要去做影响性能的点击。

   总结

   当谈到ASP性能时,要涉及到许多方面,本文已经讨论了一些。但是,对于每个具体的应用,应该有单独的考虑,并不是这里讨论的技巧都能很合适地满足。


录入时间:2006-05-11 19:35:42 [打印本页] [关闭窗口] [返回顶部]
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

Copyright © 2006-2014 0733168.Com Inc All Rights Reserved
关于我们 | 广告合作 | 联系我们 | 法律声明 | 友情链接 | 意见反馈
本站所收录信息、社区话题、及本站所做之广告均属其个人行为,与本站立场无关
湘ICP备06008436号