ASP网页编程之二十八条改良 ASP 功能和表面的技能(15...
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。技能|功能技能15:批处置内嵌剧本和Response.Write语句技能16:假如页面必要很长工夫才干完成,那末实行前利用Response.IsClientConnected
技能17:利用<OBJECT>标志例示工具
技能18:关于ADO和别的组件利用TypeLib绑定
技能19:使用扫瞄器的考证功效
技能20:制止在轮回语句中利用字符串串连
技能21:启用扫瞄器和代办署理缓存
技能15:批处置内嵌剧本和Response.Write语句
VBScript语法<%=expression%>将“expression”的值写到ASP输入流中。假如呼应缓冲未启用,那末实行个中的每条语句,城市以很多小的数据包经由过程收集将数据写到扫瞄器中。如许速率很慢。并且交叉实行大批的剧本和HTML,将引发剧本引擎和HTML之间的切换,从而下降功能。因而,利用上面的技能:利用Response.Write挪用取代绑缚严密的内嵌表达式。比方,鄙人面的示例中,在每行的每字段对呼应流有一次写操纵,每行在VBScript和HTML之间有很多切换:
<table>
<%ForEachfldinrs.Fields%>
<th><%=fld.Name%></th>
<%
Next
WhileNotrs.EOF
%>
<tr>
<%ForEachfldinrs.Fields%>
<td><%=fld.Value%></td>
<%Next
</tr>
<%rs.MoveNext
Wend%>
</table>
上面的代码更无效,每行对呼应流有一次写操纵。一切的代码都包括在一个VBScript块内:
<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
%>
</table>
当禁用呼应缓冲时,这一技能的效果出格年夜。最好启用呼应缓冲,然后看批处置Response.Write是不是有助于进步功能。
(在这一特定举例中,创建表主体的嵌套轮回(WhileNotrs.EOF...)能够用细心构建的GetString挪用来替换。)
技能16:假如页面必要很长工夫才干完成,那末实行前利用Response.IsClientConnected
假如用户性急,他们大概会在您入手下手实行他们的哀求之前,就会保持ASP页面。假如他们单击革新或移到服务器上的另外一个页面,在ASP哀求行列的开端就有一个新的哀求期待,在行列的两头有一个断开毗连的哀求。当服务器的负载很高时(因而哀求行列就会很长,呼应工夫也会响应地变长),就会常常产生这类情形,如许只能使情形变得更糟。假如用户不再毗连,实行ASP页面(出格是慢的、年夜的ASP页面)已没有任何意义。您可使用Response.IsClientConnected属性反省这一情形。假如它前往False,则应挪用Response.End并保持页的其他部分。现实上,IIS5.0已将这一做法编为程序-每当ASP行将实行新哀求时,它就会反省哀求在行列中已期待了多长工夫。假如已在那边期待了多于3秒钟,ASP将反省客户机是不是仍处于毗连形态,假如没有毗连,就当即停止哀求。您能够在设置数据库中利用AspQueueConnectionTestTime设置将超不时间由3秒调剂为别的值。
假如页面要花很长工夫才干实行完,也能够不时地反省Response.IsClientConnected。当启用了呼应缓冲时,最好不时地实行Response.Flush,以用户晓得,正在产生甚么事。
注重在IIS4.0上,除非先实行了Response.Write,不然Response.IsClientConnected就不克不及一般事情。假如启用了缓冲,您也必需实行Response.Flush。在IIS5.0上,却没有需要如许做,-Response.IsClientConnected事情一般。在任何情形下,Response.IsClientConnected城市有一些开支,因而只要在一个操纵最少要花(例如说)500毫秒(假如您想保持每秒钟数十页的吞吐量,这是一个很长的工夫)才利用它。履历标明,不要每次反复实行严密轮回时都挪用它,如显现表的很多行时-每隔二十或五十行挪用一次大概对照符合。
技能17:利用<OBJECT>标志例示工具
假如要援用不在一切代码路径(出格是服务器或使用程序感化域的工具)中利用的工具,利用Global.asa中<objectrunat=serverid=objname>标志声明它们,而不利用Server.CreateObject办法。Server.CreateObject能当即创立工具。假如今后不再利用该工具,您就华侈了资本。<objectid=objname>标志声明objname,但在其办法或属性第一次利用之前,不会创立objname。
这又是一个惰性盘算的例子。
技能18:关于ADO和别的组件利用TypeLib声明
当利用ADO时,开辟职员常常到场adovbs.txt,以会见ADO的各类常量。在要利用常量的每一个页面中必需包括此文件。此常量文件相称年夜,给每一个ASP页面的编译工夫和剧本巨细增添了很多体系开支。
IIS5.0引进了绑定到组件范例库的功效。这可以使您援用范例库一次,并将其用在每一个ASP页面上。每一个页面不会发生编译常量文件的开支,且组件开辟职员不用创建VBScript#_include文件以在ASP上利用。
要会见ADOTypeLib,将上面一条语句放在Global.asa中。
<!--METADATANAME=?MicrosoftActiveXDataObjects2.5Library?
TYPE=?TypeLib?UUID=?{00000205-0000-0010-8000-00AA006D2EA4}?-->
或
<!--METADATATYPE=?TypeLib?
FILE=?C:ProgramFilesCommonFilessystemadomsado15.dll?-->
技能19:使用扫瞄器的考证功效
当今的扫瞄器对一些初级功效如XML、DHTML、Java小程序和远程数据服务供应撑持。尽量利用这些功效。一切这些手艺都能够实行客户机端考证和数据缓存,免除了到Web服务器的往复。假如您在运转一个智能扫瞄器,那末扫瞄器就可以为您举行一些考证(比方,在实行POST之前,反省信誉卡校验和是不是无效)。尽量利用这一功效。经由过程削减客户-服务器之间的往复,可下降Web服务器上的负载,并能削减收集通讯量(固然发送到扫瞄器的第一个页面大概对照年夜)和服务器会见的任何后端资本。别的,用户不用像住常一样读取新页,从而用户的感到会好一些。如许做其实不意味着您能够不举行服务器端考证-您还应一直举行服务器端考证。这能够避免因为某种缘故原由(如黑客,或扫瞄器不运转客户机端考证例程)客户机发生毛病的数据。
人们已举行了大批的事情,开辟“自力于扫瞄器”的HTML。恰是因为这类忧愁,开辟职员不肯再利用盛行的扫瞄器功效,但这些功效本能够改良功能。关于一些真实的高功能站点,必需体贴扫瞄器“会见”成绩,一个好的战略是优化页面,使其顺应盛行的扫瞄器。利用扫瞄器功效组件,能够在ASP中便利地检测到扫瞄器功效。MicrosoftFrontPage等工具有助于计划合适于扫瞄器和指定HTML版本的代码。拜见WhenisBetterWorse?WeighingtheTechnologyTrade-Offs,以懂得更进一步的会商。
技能20:制止在轮回语句中利用字符串串连
很多人在轮回语句中创建一个字符串,以下所示:
s=?<table>?&vbCrLf
ForEachfldinrs.Fields
s=s&?<th>?&fld.Name&?</th>?
Next
WhileNotrs.EOF
s=s&vbCrLf&?<tr>?
ForEachfldinrs.Fields
s=s&?<td>?&fld.Value&?</td>?
Next
s=s&?</tr>?
rs.MoveNext
Wend
s=s&vbCrLf&?</table>?&vbCrLf
Response.Writes
接纳这类办法会呈现一些成绩。第一个成绩是重复串连字符串必要花两次方的工夫,更普通地说</p>asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效
页:
[1]