ASP应用程序优化方法

ASP应用程序优化方法

贡献者:

KB小秘书

 · 

更新时间:2020-06-28 18:10:13

提示: 这是一篇由阿里云ACE开发者(Alibaba Cloud Engineer)贡献,针对特定用户问题发布的文章。文档的内容以原稿呈现,阿里云对于文档内容不做任何形式的承诺。阿里云有权在未经通知的情形下对文档内容做出任何形式的修改。

概述

ASP本身并不是一种脚本语言,它只是提供了一种使镶嵌在HTML页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了。虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

操作数据库的优化方法

使用ASP最主要的用途就是对数据库进行操作,本小节主要对此进行介绍:

  1. 不要任意使用类似SELECT * XXX语句,请尽量展示您所需要的那些字段。例如,一个表中有10个字段,但是您只会用到其中的一个字段(name),建议使用select name from [$Table]语句,而不是使用select * from [$Table]语句。如果一个表中有50个字段,您需要使用到其中的23个字段,大多数程序员就不一定会使用select name,sex,age... from [$Table]语句,但是尽量展示您所需要的那些字段,会使您的ASP程序加快5%左右。
    说明:[$Table]为数据库的表名。
  2. 尽可能使用系统存储过程(针对MySQL和SQL Server)。有的时候完成一个读取操作,使用SQL语句和存储过程都可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了您的ASP程序运行的速度。
  3. 注意您的游标使用方法,如果您仅仅是对一个表进行读取操作,那么建议您使用forward-only或read-only游标,因为这种游标读取数据库是最为快速的,尤其是在读取数据量很大的情况。
  4. 不要打开无用的独立记录集。比如在生成一个树型记录集的时候,我们一般不得不打开父记录集以及对应的子记录集,甚至还有孙记录集,其实您可以使用ADO提供的Data Shaping技术来替代打开多个独立的记录集,那样会加快程序的运行速度。
  5. 记着关闭或打开的记录集对象以及连接(Connection)对象。有些程序员总是奇怪为何自己的ASP程序刚开始的时候运行速度很快,可是多运行几遍就越来越慢,甚至出现服务器死机或者频繁宕机的情况。发生这种情况,就很可能是您打开了太多的记录集对象以及连接(Connection)对象,但是最后却没有关闭引起的。使用如下方法进行关闭:
    YourRecordSet.closeSet
    YourRecordSet=Nothing
    Set YourConnection=Nothing
  6. 获取数据库数据的方法。大多数人是使用YourRecordSet("字段编号")或者YourRecordSet("字段名称")得到记录集的数据。其实还有其他的使用方法,现在我们就比较一下Rs("字段名称")、Rs("字段名").Value、Rs("字段编号")、Set方法数据平均回应时间如下所示。
    2.895秒
    2.931秒
    1.625秒
    0.594秒
  7. 前三种方法都比较基础,这里介绍Set方法,示例如下。
    Dim strSQLStrSQL="select name,sex,age from [$Table]"
    Dim rs
    Set rs=server.createobject("ADODB.RECORDSET")
    Rs.open strSQL,conn,1,1
    Const fieldsOrder=2
    Dim objOrder
    Set objOrder=rs(fieldsOrder)
    Response.write objOrder

ASP内置对象使用方面的优化方法

  1. 尽量减少Session对象和Application对象。虽然使用ASP中提供的这两个对象对编程提供了很大的帮助,但是,对这两个对象要合理的使用,不要滥用。因为大量的使用这两个对象将会极大的增大服务器的负担,严重消耗系统资源。也将使您的ASP程序运行较慢。
  2. 要及时关闭不再使用的对象(尤其是Session和Application),不及时关闭您所使用的对象会导致系统运行速度变得缓慢。大多数程序员认为Session和Application可以自动消失,但是系统默认30分钟内访问者如果没有任何操作就自动触发Session_OnEnd和Application_OnEnd事件,但是大量的访问者频繁的读取服务器,服务器将在很长的一段时间保持那些已经没有用的Session,Application对象,如果不及时关闭使用完的Session和Application后果将不堪想象了,关闭的方法如下。
    Set 对象=Nothing

合理使用Include文件

这里说的是使用<!--#include file="xxx"--形式包含进来的文件,并且文件内容全是ASP程序,也就是说您将一些公共的函数放到一个文件中,并将其他有可能调用其中函数的页面包含进来。

建议您不要将所有的函数放到一个包含文件中,因为您在其他页面包含这个文件的时候,服务器端是要进行预编译的,很可能在一个包含文件里面有上百个函数,而您只是想要使用其中的一个函数,这样就严重消耗系统资源。所以,尽可能的分割您的包含文件成为多个小的包含文件,这样也可以提高程序的运行速度。

VBScript语言方面的优化方法

  • 尽量使用系统函数代替自己编写的函数,比如要想分割一个有规律的"sss,ddd,fff,ggg"字符串,就不必自己使用Mid、Instr等函数来分析,其实VBScript就提供了Split()函数,这样既省时间,又提高了速度。
  • 减少动态数组的使用。
  • 尽可能提前声明变量,提前声明变量会加快程序的解释执行时间。相反,从不声明变量,不但程序难以阅读,整个程序在服务器的执行效率也会大打折扣的。

其他方面的优化方法

方法一

 在ASP文件中尽量使用<%%嵌入到HTML标签中,而不要使用Response.write的方式。

<%If ok =1 then %
Hello! World!
<%End If%

以上代码比以下代码运行速度要快,尤其是您的ASP文件比较大的情况下。因为,第二种方式增加了服务器端的解释时间,因而也就降低了ASP程序的性能。

<%
Response.write "<html"
Response.write "<body"
         If ok =1 thenResponse.write "Hello! World!"
         End IfResponse.write "Response.write "%

方法二

尽量用一个ASP文件完成一个动作,很多人喜欢在一个ASP程序中同时完成诸如添加、删除、查找等多个动作,不要认为这样是有效的利用了文件,相反,这样做的结果是使得应用程序的运行速度减慢很多。应当将添加、删除、查找等分割成单个的独立的ASP文件来完成。这样使得文件不会过于庞大,降低服务器端解释执行的负担,并且使阅读程序也变快捷。

适用于

  • 云虚拟主机
  • 250

    发布KB

  • 656

    回答问题

  • 14

    粉丝数