找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1543|回复: 5

[软文] 网站建设中ASP提速技巧五则 (很实用)

[复制链接]
发表于 2013-7-4 12:41:18 | 显示全部楼层 |阅读模式 来自 中国–江苏–南通
技巧之一:提高使用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  


??技巧之二:直接访问适当的集合  

??如果不是别无选择,否则不要使用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 "工程名称:" & 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  

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


??技巧五:不要混用脚本引擎  

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

江苏赛飞信息技术有限公司--专业的技术团队,海安软件公司能很好地满足用户个性化需求。可针对用户的业务开发出最适用、最易用的用户介面。并能满足用户的特定要求和使用习惯。网站:www.saifeinet.com 。热线:18094360075QQ2475172687

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2013-7-9 16:29:46 | 显示全部楼层 来自 中国–福建–厦门
受用了,谢谢楼主;P

评分

参与人数 1金币 +5 收起 理由
抢楼评*** + 5 很幸运,你获得了抢楼奖励!

查看全部评分

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2013-7-11 14:02:12 | 显示全部楼层 来自 中国–山西–长治
{:soso_e179:}

评分

参与人数 1金币 +3 收起 理由
抢楼评*** + 3 很幸运,你获得了抢楼奖励!

查看全部评分

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2013-8-28 13:38:46 | 显示全部楼层 来自 中国–广东–深圳
学习了哦~~

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2013-10-25 17:00:21 | 显示全部楼层 来自 中国–山西–长治
{:soso_e156:}

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2013-11-8 10:42:55 | 显示全部楼层 来自 中国–北京–北京
占楼慢慢看。:P

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-4-5 05:34 , Processed in 0.068878 second(s), 20 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表