欢迎光临
我们一直在努力

最优化ASP程序性能(转)(二)

建站超值云服务器,限时71元/月

数据库访问

   存取数据库将会很快地减慢程序,但是没有数据库,许多站点也不行。不要使用内植的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性能时,要涉及到许多方面,本文已经讨论了一些。但是,对于每个具体的应用,应该有单独的考虑,并不是这里讨论的技巧都能很合适地满足。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 最优化ASP程序性能(转)(二)
分享到: 更多 (0)

相关推荐

  • 暂无文章