HTMer
  • 首页
  • 技术
  • 下载
  • 影视
  • 音乐
  • 随笔
首页 / 技术 / 如何优化ASP源码以提高程序运行速度

如何优化ASP源码以提高程序运行速度

技术 • 2008-02-25 08:41:16 • 阅读 1241

自从微软发布ASP以来,赢得了不少程序员的青睐,在中国就目前而言,大部分的网站采用的开发语言大多还是ASP。但是ASP面临着一个大的问题,那就是它的运行速度相比其他的网站开发语言要慢的多的多,所以现在有相当一部分程序员开始改朝换代,都去学习PHP、JSP、.NET了。其实ASP也并非就那么菜,只要我们合理的优化程序,效率还是可以得到提高的。下面就讲讲如何通过优化ASP源码以提高程序的运行速度。

1、提高使用Request集合的效率

访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。例如将代码写成下面的形式以加快脚本引擎处理速度

strTitle=Request.Form("Title") 
strFirstName=Request.Form("FirstName")   
strLastName=Request.Form("LastName")  
If Len(strTitle) Then  strTitle=strTitle & " "  
If strFirstName="" Then strFullName=strTitle  & " " & strLastName  
Elseif Len(strFirstName)=1 Then  
strFullName=strTitle & strFirstName & ". " & strLastName  
Else 
strFullName=strTitle & strFirstName & " " &  strLastName  
End If

2、直接访问适当的集合

如果不是别无选择,否则不要使用strPage=Request("page")的这样的形式来获取参数,因为这将按顺序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称。这样做比直接访问适当的集合效率低,并且是不安全的,除非能绝对保证这个值不会出现在另外一个集合中。
例如,可能希望搜索满足客户请求的WEB服务器名称,这通过出现在每个查询中的Request.ServerVarables集合中寻找【SERVER_NAME】来实现。然而,假如其他的集合也包含名为【SERVER_NAME】的值(键名不区分大小写),当使用Request("server_Name")时,就会得到错误的结果。总而言之,应尽可能直接访问适当的集合。

3、在费时操作前使用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

 4、优化ASP中的ADO操作

通常面言,数据构成了WEB站点的实际内容。所以,优化ADO操作以加速ASP代码执行,十分有用:
a. 仅选择所需的列:当打开ADO记录集时,除非需要获得所有的列,否则不应自动地使用表名(即SELECT *)。使用单独的列意味着将减少发送到服务器或从服务器取出的数据量。即使需要使用全部列,单独地命名每个列也会获得最佳的性能,因为服务器不必再解释这些列的名字。

b. 尽可能的使用存储过程。存储过程是预先编译的程序,含有一个已经准备好的执行计划,所以比SQL语句执行更快。

c. 使用适当的光标和锁定模式。如果所做的全部工作只是从记录集中读取数据,并将其显示在屏幕上,那么就使用缺省的只能前移、只读的记录集。ADO用来维护记录和锁定的细节的工作越少,执行的性能就越高。

d. 使用对象变量。当遍历记录集时一个肯定能提高性能的方法是使用对象变量指向集合中的成员。例如:

While Not RsGc.EOF 
Response.Write "工程名称:" & RsGc("GcMC") & "(工程代码:"  & RsGc("GcCode") & ") 
"  
RsGc.MoveNext 
Wend

可以用改写为下面的代码以加快执行:

set GcMc=RsGc("GcMc") 
set GcCode=RsGc("GcCode")  
While Not rsGc.EOF Response.Write "工程名称:" & GcMc & "(工程代码:" & GcCode & ") 
" RsGc.MoveNext  
Wend

新的代码建立了对象变量的引用,所以可以使用对象变量而不是实际的变量,这意味着脚本引擎的工作减少了,因为在集合中进行索引的次数变少了。

5、不要混用脚本引擎

我们知道,ASP页面中既可以使用VBScript,也可以使用JScript。但是在同一个页面上同时使用JScript和VBScript则是不可取的。因为服务器必须实例化并尝试缓存两个(而不是一个)脚本引擎,这在一定程度上增加了系统负担。因此,从性能上考虑,不应在同一页面中混用多种脚本引擎。

源代码
您可能感兴趣的
JAVA开发中连接Oracle19c多租户PDB时出错的解决方法
今天用JAVA开发连接Oracle19c数据库,提示ORA-12505错误,在网上找到了解决方法,拿来分享。...
技术 • 5年前 • 阅读 1836
随机密码在线生成器
如今的时代,到处都要设置密码,设置的太简单很容易被破解,设置的复杂又比较烧脑,今天整理了一个随机密码在线生成器,可以设置大小写字母、数字、特殊字符、密码长度等,非常方便,拿来分享。...
技术 • 6年前 • 阅读 1643
jsp(JAVA)时时抓取网页内容的方法
今天项目中需要使用jsp来时时远程抓取网页的内容,实现方法比较简单,拿来分享。...
技术 • 6年前 • 阅读 1349
JavaScript实现将人民币小写金额自动转换成大写的方法
今天在项目中遇到一个需求,需要根据用户输入的人民币小写金额自动转换成大写,以免用户再次输入大写金额的麻烦,拿来分享,可以处理整数、小数、负数。...
技术 • 6年前 • 阅读 1815
ASP截取中英文字符串函数
用ASP做网站的时候经常会碰到要截取字符串的情况。ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际占用的宽度就不好计算了,如果按照Len函数计算的长度来截取字符串截出来的效果也会长短不一,下面是按照一个汉字相当于两个英文字符来计算字符串长度和截取字符串的代码。...
技术 • 9年前 • 阅读 1847
用Masonry和lazyload插件实现网页瀑布流布局的方法
我们经常能在网上看到很多瀑布流布局的页面,尤其是很多图片网站,例如花瓣网。这种最典型的瀑布流布局,每个元素的宽度是固定的,但图片长度各不相同,于是通过下图这种样子竖着排列了下来,达到了最大的页面空间利用率。...
技术 • 10年前 • 阅读 1961
  • 网页配色表
  • 二维码生成器
  • 整数分区计算器
  • 随机密码生成器
  • 金额大写转换
Copyright © 2023 HTMer.com⋅苏ICP备08003082号-1⋅ 苏公网安备32041202002242⋅Powered By Z-Blog
  • 首页
  • 技术
  • 下载
  • 影视
  • 音乐
  • 随笔
标签
软件技巧 Windows 源代码 主机 Office 浏览器 腾讯 科普资讯 数据库 病毒防护 节日 下载 远程桌面 Google 心情 足球 PS 健康 电影 音乐 百度 Apple 阿里巴巴 Z-Blog 播放器 微信 阿里云盘 VMware
关于我

研究互联网络和电脑应用技术的IT技术网

HTMer简介