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

程序|性能|优化

数据库访问

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

时间: 2024-09-13 21:04:45

最优化ASP程序性能(转)(二)的相关文章

最优化ASP程序性能

 Active Server Pages可以让动态页面很快地执行,但是,在代码中和数据库的连接上加入一些技巧,就能让程序更快地执行.这是一篇关于如何精制脚本程序以及ASP特征来达到最大速度的文章.任何在用户点击按钮到在屏幕上出现结果间延迟都会让用户茫然,对于一个商业站点,这就意味着潜在的用户损失. ASP脚本的尺寸 我们也许不能控制用户的带宽,但是通过优化ASP站点,我们的确能够使应用达到最佳性能.许多潜在的性能收获可以通过系统调整,而不是改变代码. 因素 首先,有哪些因素可能影响ASP程序的性

最优化ASP程序性能(转)

程序|性能|优化 Active Server Pages可以让动态页面很快地执行,但是,在代码中和数据库的连接上加入一些技巧,就能让程序更快地执行.这是一篇关于如何精制脚本程序以及ASP特征来达到最大速度的文章.任何在用户点击按钮到在屏幕上出现结果间延迟都会让用户茫然,对于一个商业站点,这就意味着潜在的用户损失. ASP脚本的尺寸 我们也许不能控制用户的带宽,但是通过优化ASP站点,我们的确能够使应用达到最佳性能.许多潜在的性能收获可以通过系统调整,而不是改变代码. 因素 首先,有哪些因素可能影

ASP程序性能测试报告(二)

程序|性能 三.第一次测试 在第一次测试中,我们模拟Microsoft ASP ADO示例中可找到的典型情形提取一个记录集.在这个例子(ADO__01.asp)中,我们首先打开一个连接,然后创建记录集对象.当然,这里的脚本按照本文第一部分所总结的编码规则作了优化. < % Option Explicit % >< !-- #Include file="ADOVBS.INC" -- >< % Dim objConnDim objRS Response.Wri

如何增强ASP程序性能(2) (jaklin摘自Yesky)

程序|性能                    如何增强ASP程序性能(2)               2000-08-11· 编译:甘冀平·Yesky 技巧6:聪明地使用Session对象 Session在繁忙站点上使用时有几个缺陷.繁忙的意思是:站点上每秒有上百的页面被请求,或者同时有上千的访问用户.这个技巧对于那些要求水平扩展强的站点非常重要,也就是指这些站点:它们利用多个服务器完成数据装载或者处理大量容错.对于小型站点,比如内部网Intranet,Session是非常值得提倡的. 再

如何增强ASP程序性能(1)

程序|性能 如何增强ASP程序性能(1) 2000-08-10· 甘冀平·Yesky 简介 性能是一个很重要的特征.你需要事先设计好性能指标,否则日后就要为此重新编写程序.就是说:要设想好怎样最佳化地执行ASP程序? 本文提出了一些优化ASP应用和VBScript的技巧,许多技巧和缺陷都经过了研讨.这里列出的建议已经在http://www.microsoft.com 和其他站点上进行了测试,都工作得非常好.本文假设你具备ASP开发的基本知识,包括VBScript或者JScript,ASP应用程序

如何增强ASP程序性能(2)

程序|性能 如何增强ASP程序性能(2) 2000-08-11· 编译:甘冀平·Yesky 技巧6:聪明地使用Session对象 Session在繁忙站点上使用时有几个缺陷.繁忙的意思是:站点上每秒有上百的页面被请求,或者同时有上千的访问用户.这个技巧对于那些要求水平扩展强的站点非常重要,也就是指这些站点:它们利用多个服务器完成数据装载或者处理大量容错.对于小型站点,比如内部网Intranet,Session是非常值得提倡的. 再次重申,ASP自动地为每一个首次点击Web服务器的用户创建一个Se

如何增强ASP程序性能(1) (jaklin摘自Yesky)

            如何增强ASP程序性能(1)            2000-08-10· 甘冀平·Yesky简介 性能是一个很重要的特征.你需要事先设计好性能指标,否则日后就要为此重新编写程序.就是说:要设想好怎样最佳化地执行ASP程序? 本文提出了一些优化ASP应用和VBScript的技巧,许多技巧和缺陷都经过了研讨.这里列出的建议已经在http://www.microsoft.com 和其他站点上进行了测试,都工作得非常好.本文假设你具备ASP开发的基本知识,包括VBScript或

ASP程序性能测试报告

程序|性能 纲要:ASP动态生成的内容以什么方式输出效率最高?最好用哪种方法提取数据库记录集?本文测试了近20个这类ASP开发中常见的问题,测试工具所显示的时间告诉我们:这些通常可以想当然的问题不仅值得关注,而且还有出乎意料的秘密隐藏在内. 一.测试目的 本文的第一部分考察了ASP开发中的一些基本问题,给出了一些性能测试结果以帮助读者理解放入页面的代码到底对性能有什么影响.ADO是由Microsoft开发的一个通用.易用的数据库接口,事实证明通过ADO与数据库交互是ASP最重要的应用之一,在第二

完全优化ASP程序性能

ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了.虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情. 现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了.那就跟随我来一同加速你的ASP程序吧! 一. 有关操作数据库的优化方法 我们使用ASP最主要的用途就是对数据库进行操作了,如何更快速的完成