ASP网页编程之优化ASP程序技能四则
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的程序|技能|优化 本文将向人人先容四则优化ASP使用程序的技能。<P> 1.将常常利用的数据缓存在Application或Session工具中 ASP的Application和Session工具为将数据暂存在内存中供应了便利的容器。你能够将数据指派到Application和Session工具中,这些数据在HTTP挪用之前保存在内存中。Session数据是按每一个用户分离存储的,而Application数据则在一切用户之间共享。
甚么时分将数据装载到Application或Session中呢?一般,数据是在启动Application或Session古装载。要在Application或Session启动过程当中装载数据,应将得当的代码分离增加到Application_OnStart()或Session_OnStart()中。这些函数应当在Global.asa中,假如没有,我们可手工增加进这些函数。还能够在第一次必要古装载该数据。为此,在ASP页中增加一些代码(或编写一个可反复利用的剧本函数),以反省数据是不是存在,假如不存在,就装载数据。这是一个传统进步功能的手艺,称为“惰性盘算”,即在你晓得必要某一个值之前不盘算该值。程序举比方下:
<%
FunctionGetEmploymentStatusList
Dimd
d=Application(?EmploymentStatusList?)
Ifd=??Then
FetchEmploymentStatusListfunction(notshown)
fetchesdatafromDB,returnsanArray
d=FetchEmploymentStatusList()
Application(?EmploymentStatusList?)=d
EndIf
GetEmploymentStatusList=d
EndFunction
%>
我们能够为所必要的每一个数据块编写相似的函数。
<P> 2.将代码封装在COM工具中
假如你的Web使用程序中有很多VBScript或JScript代码,你能够常常将代码移到编译的COM工具中,从而可改良功能。将代码封装在COM工具中另有一些除进步功能以外的其他长处:
(1)COM工具有益于将暗示逻辑与营业逻辑分隔;
(2)COM工具能够包管代码反复利用;
(3)用VB、VC++或VisualJ++编写的代码比ASP更简单调试。
COM工具也出缺点,包含初始化工夫长和必要分歧的程序计划技能。值得注重的是,在大批ASP代码被封装进COM工具时,大概不会使功能有所改善,反而会引发功能下落。这类情形一般是创立和挪用COM工具的体系开支凌驾了编译代码的体系开支。因而,我们必要重复地实验,以断定甚么样的ASP剧本和COM工具代码的组合能够发生最好的功能。
3.处置内嵌剧本和Response.Write语句
VBScript语法的<%=expression%>是将“expression”的值写到ASP输入流中。假如呼应缓冲未启用,那末实行个中的每条语句城市以很多小的数据包经由过程收集将数据写到扫瞄器中。如许,实行速率很慢,并且交叉实行大批的剧本和HTML,将会引发剧本引擎和HTML之间的切换,从而极年夜地下降了功能。因而,我们可使用上面的技能,即便用Response.Write挪用取代绑缚严密的内嵌表达式。
比方,鄙人面的示例中,在每行的每字段对呼应流有一次写操纵,每行在VBScript和HTML之间有屡次切换:
<table>
<%ForEachfldinrs.Fields%>
<th><%=fld.Name%></th>
<%
Next
WhileNotrs.EOF
%>
<tr>
<%ForEach
fldinrs.Fields%>
<td><%=fld.Value%></td>
<%Next
</tr>
<%rs.MoveNextWend%>
</table>
为了使下面的代码运转效力更高,我们能够使用上面的代码,代码的每行对呼应流有一次写操纵,一切的代码都包括在一个VBScript程序内:
<%
Response.Write(?<table>?)
Foreachfldinrs.Fields
Response.Write(?<th>?&&fld.Name&&?</th>?&&vbCrLf)
Next
WhileNotrs.EOF
Response.Write(?<tr>?)
ForEachfldinrs.Fields%>
Response.Write(?<td>?&&fld.Value&&?</td>?&&vbCrLf)
Next
Response.Write(?</tr>?)
Wend
Response.Write(?</table>?)
%>
当禁用呼应缓冲时,这一技能的效果出格分明。最好启用呼应缓冲,然后看批处置Response.Write是不是有助于进步功能。
4.制止从头断定数组的维数
在使用数组时,我们应只管制止利用Redim数组。就功能而言,假如盘算机的物理内存巨细无限,最好将数组的初始维数设置为其最倒霉的情形,大概将维数设置为其最好的情形,然后再按必要从头断定维数。
在开辟ASP的Web使用程序过程当中,充实使用以上技能会使你的Web程序具有较高的实行功能。
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
页:
[1]