当前位置: 首页 > 图文教程 > 网络编程 > ASP > 提高ASP性能的最佳选择(续一)

ASP
[原创]asp下用实现模板加载的的几种方法总结
asp下利用fso实现文件夹或文件移动改名等操作函数
asp cint clng的范围与防止cint和clng的溢出解决方法大全
asp防范跨站点脚本攻击的的方法
独孤剑写的马克斯迅雷片库采集插件1.4 官方最新版提供下载了
根据日期得到生肖的ASP函数
不错的主要用于加密的vbs(asp)位移运算类
Script.VBS.Agent.ai juan.vbs专杀
循环取值Request.QueryString的用法
asp下实现字符串的补充fill()
无服务器做任意二级米子站
几种另类的ASP后门
asp事物功能简单小应用
ASP获取网页全部图片地址并保存为数组的正则
通过客户端验证上传图片文件大小的ASP源码
asp下计算分页的几种方法
谈动态多行多列,循环行和列,输出M行N列的ASP代码
asp在线执行sql语句的函数
asp正则html的图片,对图自动缩放大小
文件名 正则表达式提取方法

提高ASP性能的最佳选择(续一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 221 ::
收藏到网摘: n/a

    在本文的第一部分中,我回顾了有关ASP开发的一些基本问题,介绍了一些性能测试的结果,以理解我们放置在页面中的代码可能对运行性能造成什么样的影响。在这个系列的第二部分,我们将探讨经过论证的ASP最广泛的用途,即通过ActiveX 数据对象(ADO)交互使用数据库内容。ADO是Microsoft通用并简单的数据库界面。

  ADO有很多的功能设置,因此准备这篇文章时最大的挑战便是限制测试问题的范围。考虑到读取大数据集会为web 服务器施加很大的负载,我决定将研究的内容局限在为使用ADO记录集寻找最优化配置的方面。但是这个限制还是提出了一个挑战,因为ADO为执行同一个功能提供了多种方式。比如说,记录集可以从Recordset 类中恢复,也可以从Connection和Command 类中恢复。另外,一旦你有了一个记录集,那么有很多个选择会戏剧性地影响性能。因此,同第一部分一样,我将尽可能地多涉及一些具体问题。

目的
  我研究的目的是获取足够的信息以找到以下问题的答案:

  * 是否应该使用ADOVBS.inc包含文件?

  * 当使用一个记录集时,是否应该创建一个单独的Connection对象?

  * 恢复一个记录集最好的方法是什么?

  * 指针和锁的类型中,哪些是最有效的?

  * 是否应该使用断开的记录集?

  * 设置记录集(Recordset)属性的最好方法是什么?

  * 引用记录集中域值的最有效方法是什么?

  * 使用临时字符串可以较好地代替缓冲器吗?

测试是如何设立的?
  为进行这项研究中的测试,我们共组装了21个ASP页面(包含在本文下载内容中)。每个页面都被配置成用3个不同的查询返回记录集运行,这些记录集中分别有0、25、250条记录。这可以帮助我们将装载记录集的问题和在记录集中循环上的性能问题隔离开。

  为满足这些变化的条件,数据库连接字符串和测试SQL字符串都作为应用程序变量存储在Global.asa中。因为我们的测试数据库是在Microsoft SQL Server 7.0上运行的,因此我们的连接字符串指定OLEDB作为连接供应者、Northwind 样本数据库(包含在SQL服务器中)作为当前数据库。SQL SELECT语句要求Northwind Orders 表格中的7个特定域。

  < SCRIPT LANGUAGE=VBScript RUNAT=Server >

  Sub Application_OnStart

  Application("Conn") = "Provider=SQLOLEDB; " & _

  "Server=MyServer; " & _

  "uid=sa; " & _

  "pwd=;" & _

  "DATABASE=northwind"

  Application("SQL") = "SELECT TOP 0 OrderID, " & _

  " CustomerID, " & _

  " EmployeeID, " & _

  " OrderDate, " & _

  " RequiredDate, " & _

  " ShippedDate, " & _

  " Freight " & _

  "FROM [Orders] "

  End Sub

  < /SCRIPT >

  'alternate sql ?25 records

  Application("SQL") = "SELECT TOP 25 OrderID, " & _

  " CustomerID, " & _

  " EmployeeID, " & _

  " OrderDate, " & _

  " RequiredDate, " & _

  " ShippedDate, " & _

  " Freight " & _

  "FROM [Orders] "

  'alternate sql ?250 records

  Application("SQL") = "SELECT TOP 250 OrderID, " & _

  " CustomerID, " & _

  " EmployeeID, " & _

  " OrderDate, " & _

  " RequiredDate, " & _

  " ShippedDate, " & _

  " Freight " & _

  "FROM [Orders] "

  我们的测试服务器是一个双450 MHz Pentium ,512MB的RAM,在其上运行着NT Server 4.0 SP5, MDAC 2.1 (数据访问组件)以及Microsoft Scripting Engine的5.0版本。SQL服务器在一个同样规格的单独机器上运行。同第一篇文章一样,我使用Microsoft的Web应用程序重点工具记录从最初的页面请求到传输最后一个字节(TTLB )的时间,精确到服务器上的毫秒级。这个测试脚本运行20小时,调用每个页面1300次以上。显示的时间是session的平均TTLB。要记住的是,同第一篇文章一样,我们只是试图涉及性能方面的问题,而非伸缩性和容量的问题。

  还请注意,我们在服务器上开启了缓冲器。另外,我把所有的文件名都定为同样长度,