|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP脚本是采用明文(plaintext)方式来编写的。呼应|呼应本篇教程次要先容:将ASP天生的内容写进呼应流中最无效的办法,即用Response.Write和<%=%>向客户端输入内容时的效力测试。
利用ASP的一个最次要缘故原由是在服务器上天生静态内容。以是很分明,我们测试的出发点是断定将静态内容发送到呼应流中的最合适的体例。
在多种选择中,有两个是最基础的:一是利用内联ASP标志,另外一个是利用Response.Write语句。
为测试这些选择,我们创立了一个复杂的ASP页面,个中界说了一些变量,然后将它们的值拔出表格中。固然这个页面很复杂也不是很有用
,但它同意我们分别并测试一些独自的成绩。
利用ASP内联标志
第一个测试包含利用内联ASP标志<%=x%>,个中x是一个已赋值的变量。到今朝为止,这个办法是最简单实行的,而且它使页面的HTML部分
坚持一种易于浏览和保护的格局。
<%
OPTIONEXPLICIT此句感化是强迫利用每一个变量前必需先界说
DimFirstName
DimLastName
DimMiddleInitial
DimAddress
DimCity
DimState
DimPhoneNumber
DimFaxNumber
DimEMail
DimBirthDate
FirstName="John"
MiddleInitial="Q"
LastName="Public"
Address="100MainStreet"
City="NewYork"
State="NY"
PhoneNumber="1-212-555-1234"
FaxNumber="1-212-555-1234"
EMail="john@public.com"
BirthDate="1/1/1950"
%>
<HTML>
<HEAD>
<TITLE>ResponseTest</TITLE>
</HEAD>
<BODY>
<H1>ResponseTest</H1>
<TABLE>
<tr><td><b>FirstName:</b></td><td><%=FirstName%></td></tr>
<tr><td><b>MiddleInitial:</b></td><td><%=MiddleInitial%></td></tr>
<tr><td><b>LastName:</b></td><td><%=LastName%></td></tr>
<tr><td><b>Address:</b></td><td><%=Address%></td></tr>
<tr><td><b>City:</b></td><td><%=City%></td></tr>
<tr><td><b>State:</b></td><td><%=State%></td></tr>
<tr><td><b>PhoneNumber:</b></td><td><%=PhoneNumber%></td></tr>
<tr><td><b>FaxNumber:</b></td><td><%=FaxNumber%></td></tr>
<tr><td><b>EMail:</b></td><td><%=EMail%></td></tr>
<tr><td><b>BirthDate:</b></td><td><%=BirthDate%></td></tr>
</TABLE>
</BODY>
</HTML>
/app1/response1.asp的完全代码
之前的最好(反响速率)=8.28msec/page
在HTML的每利用用Response.Write语句
很多对照好的进修文档倡议制止利用后面的那种办法。其次要来由是,在输入页面和处置页面施加反响工夫的过程当中,假如web服务器不
得不在发送纯HTML和处置剧本之间举行转换,就会产生一种被称为高低文转换的成绩。年夜部分程序员一听到这里,他们的第一反响就是将原始
的HTML的每行都包装在Response.Write函数中。
…
Response.Write("<html>")
Response.Write("<head>")
Response.Write("<title>ResponseTest</title>")
Response.Write("</head>")
Response.Write("<body>")
Response.Write("<h1>ResponseTest</h1>")
Response.Write("<table>")
Response.Write("<tr><td><b>FirstName:</b></td><td>"&FirstName&"</td></tr>")
Response.Write("<tr><td><b>MiddleInitial:</b></td><td>"&MiddleInitial&"/td></tr>")
…
/app1/response2.asp的片断
之前的最好(反响速率)=8.28msec/page
反响工夫=8.08msec/page
差=-0.20msec(削减2.4%)
我们能够看到,利用这类办法与利用内联标志的办法比拟在功能上取得的收益十分小,这大概是由于页面给服务器装载了一年夜堆小的函数
挪用。这类办法最年夜的弱点是,因为如今HTML都嵌进剧本中,以是剧本代码变得加倍冗杂,加倍难以浏览和保护。
利用包装函数
当我们试图利用Response.Write语句这类办法时,最使人悲观的发明大概就是Response.Write函数不克不及在每行的开头处安排一个CRLF。
因而,当你从扫瞄器中浏览源代码时,原本安排得十分好的HTML,如今成了没有停止的一行。我想,你的下一个发明大概会更令你可怕:在
Response工具中没有其姊妹函数Writeln。以是,一个很分明的反响就是为Response.Write函数创立一个包装函数,以便给每行都附加一
个CRLF。
…
writeCR("<tr><td><b>FirstName:</b></td><td>"&FirstName&"</td></tr>")
…
SUBwriteCR(str)
Response.Write(str&vbCRLF)
ENDSUB
/app1/response4.asp的片断
之前的最好(反响速率)=8.08msec/page
反响工夫=10.11msec/page
差=+2.03msec(增添25.1%)
固然,因为这类办法无效地使函数挪用次数更加,其对功能的影响也很分明,因而要不吝统统价值制止。具有取笑意味的是CRLF也向反响
流中为每行增添了2个字节,而这是扫瞄器不必要出现到页面上的。格局化优秀的HTML所做的统统就是让你的合作者更简单浏览你的HTML源代码
并了解你的计划。
将一连的Response.Write毗连到一个独自语句中
不思索我们后面用包装函数举行的测试,下一个符合逻辑的步骤就是从独自的Response.Write语句中提掏出一切的字符串,将它们毗连到
一个独自语句中,如许就削减了函数挪用的次数,极年夜地进步了页面的功能。
…
Response.Write("<html>"&_
"<head>"&_
"<title>ResponseTest</title>"&_
"</head>"&_
"<body>"&_
"<h1>ResponseTest</h1>"&_
"<table>"&_
"<tr><td><b>FirstName:</b></td><td>"&FirstName&"</td></tr</p>由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|