- ·上一篇文章:ASP中使用Session变量的优缺点
- ·下一篇文章:asp操作excel文件
提高asp访问速度的方法
打开asp页面的时候,页面需要访问数据库,然后将要符合要求的内容,显示到页面上来。若数据库中的记录很多,那么、页面的访问速度也就相对变慢,通过以下方法,可以提高页面的访问速度
技巧之一:提高使用Request集合的效率 
 
 
 
 
访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问
一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。
例如将代码写成下面的形式以加快脚本引擎处理速度: 
strTitle=Request.Form("
Title"
) 
strFirstName=Request.Form("
FirstName"
) 
strLastName=Request.Form("
LastName"
) 
If 
Len(strTitle) 
Then 
strTitle=strTitle 
&
#38
 
"
 
"
 
If 
strFirstName="
"
 
Then 
strFullName=strTitle 
&
#38
 
"
 
"
 
&
#38
 
strLastName 
Elseif 
Len(strFirstName)=1 
Then 
strFullName=strTitle 
&
#38
 
strFirstName 
&
#38
 
"
. 
"
 
&
#38
 
strLastName 
Else 
strFullName=strTitle 
&
#38
 
strFirstName 
&
#38
 
"
 
"
 
&
#38
 
strLastName 
End 
If
 
技巧之二:直接访问适当的集合 
 
 
 
 
如果不是别无选择,否则不要使用strPage=Request("
page"
)的这样的形式来获取参数,因为这将按顺序搜索全部的集合—
QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称。这样做比直接访问适
当的集合效率低,并且是不安全的,除非能绝对保证这个值不会出现在另外一个集合中。 
例如,可能希望搜索满足客户请求的WEB服务器名称,这通过出现在每个查询中的Request.ServerVarables集合中寻找
“SERVER_NAME”来实现。然而,假如其他的集合也包含名为“SERVER_NAME”的值(键名不区分大小写),当使用Request
("
server_Name"
)时,就会得到错误的结果。总而言之,应尽可能直接访问适当的集合。 
技巧之三:在费时操作前使用Response.IsClientConnected属性 
 
 
 
 
使用Response.IsClientConnected是观察用户是否仍连到服务器并正在载入ASP创建的网页的有用方式。如果用户断开连接
或停止下载,我们就不用再浪费服务器的资源创建网页,因为缓冲区内容将被IIS丢弃。所以,对那些需要大量时间计算或
资源使用较多的网页来说,值得在每一阶段都检查游览者是否已离线: 
…… 
Code 
to 
create 
first 
part 
of 
the 
page 
If 
Response.IsClientConnected 
Then 
Response.Flush 
Else 
Response.End 
End 
If 
…… 
Code 
to 
create 
next 
part 
of 
page 
技巧之四:优化ASP中的ADO操作 
 
 
 
 
通常面言,数据构成了WEB站点的实际内容。所以,优化ADO操作以加速ASP代码执行,十分有用: 
a. 
仅选择所需的列:当打开ADO记录集时,除非需要获得所有的列,否则不应自动地使用表名(即SELECT 
*)。使用单独
的列意味着将减少发送到服务器或从服务器取出的数据量。即使需要使用全部列,单独地命名每个列也会获得最佳的性
能,因为服务器不必再解释这些列的名字。 
b. 
尽可能的使用存储过程。存储过程是预先编译的程序,含有一个已经准备好的执行计划,所以比SQL语句执行更快。 
c. 
使用适当的光标和锁定模式。如果所做的全部工作只是从记录集中读取数据,并将其显示在屏幕上,那么就使用缺省的
只能前移、只读的记录集。ADO用来维护记录和锁定的细节的工作越少,执行的性能就越高。 
d. 
使用对象变量。当遍历记录集时一个肯定能提高性能的方法是使用对象变量指向集合中的成员。例如: 
While 
Not 
RsGc.EOF 
Response.Write 
"
工程名称:"
 
&
#38
 
RsGc("
GcMC"
) 
&
#38
 
"
(工程代码:"
 
&
#38
 
RsGc("
GcCode"
) 
&
#38
 
"
)
"
 
RsGc.MoveNext 
Wend 
可以用改写为下面的代码以加快执行: 
set 
GcMc=RsGc("
GcMc"
) 
set 
GcCode=RsGc("
GcCode"
) 
While 
Not 
rsGc.EOF 
Response.Write 
"
工程名称:"
 
&
#38
 
GcMc 
&
#38
 
"
(工程代码:"
 
&
#38
 
GcCode 
&
#38
 
"
)
"
 
RsGc.MoveNext 
Wend 
新的代码建立了对象变量的引用,所以可以使用对象变量而不是实际的变量,这意味着脚本引擎的工作减少了,因为在集
合中进行索引的次数变少了。 
技巧五:不要混用脚本引擎 
 
 
 
 
我们知道,ASP页面中既可以使用VBScript,也可以使用JScript。但是在同一个页面上同时使用JScript和VBScript则是不
可取的。因为服务器必须实例化并尝试缓存两个(而不是一个)脚本引擎,这在一定程度上增加了系统负担。因此,从性
能上考虑,不应在同一页面中混用多种脚本引擎。
技巧之一:提高使用Request集合的效率 
 
 
 
 
访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问
一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。
例如将代码写成下面的形式以加快脚本引擎处理速度: 
strTitle=Request.Form("
Title"
) 
strFirstName=Request.Form("
FirstName"
) 
strLastName=Request.Form("
LastName"
) 
If 
Len(strTitle) 
Then 
strTitle=strTitle 
&
#38
 
"
 
"
 
If 
strFirstName="
"
 
Then 
strFullName=strTitle 
&
#38
 
"
 
"
 
&
#38
 
strLastName 
Elseif 
Len(strFirstName)=1 
Then 
strFullName=strTitle 
&
#38
 
strFirstName 
&
#38
 
"
. 
"
 
&
#38
 
strLastName 
Else 
strFullName=strTitle 
&
#38
 
strFirstName 
&
#38
 
"
 
"
 
&
#38
 
strLastName 
End 
If
 
技巧之二:直接访问适当的集合 
 
 
 
 
如果不是别无选择,否则不要使用strPage=Request("
page"
)的这样的形式来获取参数,因为这将按顺序搜索全部的集合—
QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称。这样做比直接访问适
当的集合效率低,并且是不安全的,除非能绝对保证这个值不会出现在另外一个集合中。 
例如,可能希望搜索满足客户请求的WEB服务器名称,这通过出现在每个查询中的Request.ServerVarables集合中寻找
“SERVER_NAME”来实现。然而,假如其他的集合也包含名为“SERVER_NAME”的值(键名不区分大小写),当使用Request
("
server_Name"
)时,就会得到错误的结果。总而言之,应尽可能直接访问适当的集合。 
技巧之三:在费时操作前使用Response.IsClientConnected属性 
 
 
 
 
使用Response.IsClientConnected是观察用户是否仍连到服务器并正在载入ASP创建的网页的有用方式。如果用户断开连接
或停止下载,我们就不用再浪费服务器的资源创建网页,因为缓冲区内容将被IIS丢弃。所以,对那些需要大量时间计算或
资源使用较多的网页来说,值得在每一阶段都检查游览者是否已离线: 
…… 
Code 
to 
create 
first 
part 
of 
the 
page 
If 
Response.IsClientConnected 
Then 
Response.Flush 
Else 
Response.End 
End 
If 
…… 
Code 
to 
create 
next 
part 
of 
page 
技巧之四:优化ASP中的ADO操作 
 
 
 
 
通常面言,数据构成了WEB站点的实际内容。所以,优化ADO操作以加速ASP代码执行,十分有用: 
a. 
仅选择所需的列:当打开ADO记录集时,除非需要获得所有的列,否则不应自动地使用表名(即SELECT 
*)。使用单独
的列意味着将减少发送到服务器或从服务器取出的数据量。即使需要使用全部列,单独地命名每个列也会获得最佳的性
能,因为服务器不必再解释这些列的名字。 
b. 
尽可能的使用存储过程。存储过程是预先编译的程序,含有一个已经准备好的执行计划,所以比SQL语句执行更快。 
c. 
使用适当的光标和锁定模式。如果所做的全部工作只是从记录集中读取数据,并将其显示在屏幕上,那么就使用缺省的
只能前移、只读的记录集。ADO用来维护记录和锁定的细节的工作越少,执行的性能就越高。 
d. 
使用对象变量。当遍历记录集时一个肯定能提高性能的方法是使用对象变量指向集合中的成员。例如: 
While 
Not 
RsGc.EOF 
Response.Write 
"
工程名称:"
 
&
#38
 
RsGc("
GcMC"
) 
&
#38
 
"
(工程代码:"
 
&
#38
 
RsGc("
GcCode"
) 
&
#38
 
"
)
"
 
RsGc.MoveNext 
Wend 
可以用改写为下面的代码以加快执行: 
set 
GcMc=RsGc("
GcMc"
) 
set 
GcCode=RsGc("
GcCode"
) 
While 
Not 
rsGc.EOF 
Response.Write 
"
工程名称:"
 
&
#38
 
GcMc 
&
#38
 
"
(工程代码:"
 
&
#38
 
GcCode 
&
#38
 
"
)
"
 
RsGc.MoveNext 
Wend 
新的代码建立了对象变量的引用,所以可以使用对象变量而不是实际的变量,这意味着脚本引擎的工作减少了,因为在集
合中进行索引的次数变少了。 
技巧五:不要混用脚本引擎 
 
 
 
 
我们知道,ASP页面中既可以使用VBScript,也可以使用JScript。但是在同一个页面上同时使用JScript和VBScript则是不
可取的。因为服务器必须实例化并尝试缓存两个(而不是一个)脚本引擎,这在一定程度上增加了系统负担。因此,从性
能上考虑,不应在同一页面中混用多种脚本引擎。
提高asp访问速度的方法