|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了,程序|功能技能11:利用ResponseBuffering
经由过程翻开“responsebuffering”能够缓冲一个值得输入的全部页面内容,这将最小化输入到扫瞄器的数据量,从而进步了全体功能。每次输入都泯灭很多,以是写得越少,效果越好。TCP/IP在发送大批年夜的数据包时,要比发送大批小的数据包事情效力高,由于它是慢速启动其实不断发送的。
有2种办法翻开ResponseBuffering。起首,可使用InternetServicesManager为全部使用程序翻开responsebuffering,这是保举的体例,并且在IIS4.0和IIS5.0中,默许形态下,responsebuffering是翻开的。其次,在每页面上,能够在头部安排以下代码开翻开responsebuffering:
<%Response.Buffer=True%>
这段代码必需在任何数据输入到扫瞄器前被实行(就是说,在任何html内容显现前和在任何cookie被设置前)。一般情形下,为全部使用程序翻开responsebuffering是很好的计划,这么做后就不必在每一个页面头部设置如上的代码。
关于翻开responsebuffering的一个通用成绩是:用户必需要守候全部页面全体发生后,才干看到内容。关于一个长工夫运转的页面来讲,能够设置Response.Buffer=False封闭缓冲。然后,好的战略是使用Response.Flush办法,它将输入一切已被ASP形貌的HTML内容到扫瞄器。好比,在形貌了一个1,000行表格的100行后,ASP就能够利用Response.Flush来强制输入这100行的内容到扫瞄器,这时候用户就能够看到前100行数据,同时其他的行数据正在筹办天生。
注重,关于下面的1,000行表格输入的例子,关于一些扫瞄器器来讲,除非碰到</table>标志,它们不会输入表格的任何内容。假如如许,能够将表格支解成很多含有大批行的多个表格,然后在每个表格发生后,挪用Response.Flush输入。新版的InternetExplorer在全部表格下载后才显现内容,而且,假如界说了表格的列宽度,天生表格的速率将出格快。
关于翻开responsebuffering的别的一个成绩是:当天生十分年夜的页面时,将损耗十分年夜的服务器内存。
技能12:批处置单行剧本和Response.Write命令
VBScript语法<%=expression%>的意义是输入expression的数值。假如responsebuffering没有翻开,每一个如许的语句将依照很多小数据包的情势输入数据到扫瞄器,这将下降程序功能。因而,请利用上面的技能:交换紧挨着的多个一行表达式挪用为一个挪用,用Response.Write称号输入。好比,鄙人面的例子中,关于每行每一个字段的输入,只要一个写操纵:
<table>
<%ForEachfldinrs.Fields%>
<th><%=fld.Name%></th>
<%
Next
WhileNotrs.EOF
%>
<tr>
<%ForEachfldinrs.Fields%>
<td><%=fld.Value%></td>
<%Next
</tr>
<%rs.MoveNext
Wend%>
</table>
上面是更无效率的代码,每行一个输入:
<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>
当responsebuffering封闭时,这个技能十分得有效。最好是翻开responsebuffering,如许就能够看到批量的Response.Wwrite是怎样进步了程序功能。
技能13:利用<OBJECT>标志援用工具
假如必要援用除代码路径外的工具(特别是服务器、Application局限的工具),请在Global.asa文件中利用
<objectrunat=serverid=objname>标志来界说它们,而不要利用Server.CreateObject办法。利用Server.CreateObject办法能够当即创立工具,如许假如随后不利用它,就华侈了资本。利用
<objectid=objname>标志能够界说工具objname,可是直到它的属性大概办法初次利用时,objname才实践创立。
技能14:制止在轮回中串连字符串
很多人在轮回中创建一个字符串,就象上面的模样:
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
这存在几个成绩。起首是反复的毗连字符串损耗二次方的工夫,并且,运转的工夫与盘算的字段数目也是平方的干系。上面的复杂例子更分明地申明这一点:
s=""
Fori=Asc("A")toAsc("Z")
s=s&Chr(i)
Next
在第1层轮回时,S的值是“A”;第2层轮回时,VBScript要从头分派字符串,拷贝了2个字符(“AB”)到S中;第3层轮回时,必要再从头分派而且拷贝3个字符到S中。在第N层轮回时,就必要从头分派并拷贝N个字符到S中。那就是1+2+3+...+N的总和,也就是N*(N+1)/2个拷贝。
在下面的纪录集例子中,假如有100个纪录和5个字段,外部轮回就要实行100*5=500次,而且,完成一切拷贝和再分派义务的工夫将靠近500*500=250,000。这仍是一个得当尺寸纪录集的拷贝事情。
在这个例子中,能够经由过程交换字符串联接为Response.Write()大概行内剧本(<%=fld.Value%>)的办法进步程序功能。假如responsebuffering翻开(也应当翻开),这将很快,由于Response.Write仅仅附加数据在缓冲区的尾部,并且不必要再分派。
假如用JScript毗连字符串,激烈倡议利用“+=”操纵符,就是说,利用s+=“字符串”,而不是s=s+“字符串”。
技能15:翻开扫瞄器和代办署理的缓冲
默许情形下,ASP克制了扫瞄器和代办署理的缓冲功效。假如有一个每次都不要更新的页面,就应当翻开扫瞄器和代办署理的缓冲,这将同意扫瞄器和代办署理在一段工夫内利用该页面的“缓冲”拷贝数据。缓冲可以年夜年夜地加重服务器的数据转载量,并进步用户的扫瞄功能。
哪些种别的静态页面合适被缓存呢?上面是一些例子:
天色页面,每5分钟更新一次
旧事或版本列表页面,天天更新2次
注重:利用扫瞄器大概代办署理缓存后,对Web服务器的点击次数就会削减。假如想准确地懂得一切页面,大概关于邮递告白,就不适于利用扫瞄器和代办署理缓存了。
扫瞄器缓存由HTTP“Expires”头参数把持,它由Web服务器发送给扫瞄器。ASP供应了2个复杂的办法发送这个头部参数。设置页面在将来必定工夫内到期,可使用Response.Expires属性。上面的例子将告知扫瞄器内容在10分钟后过时:
<%Response.Expires=10%>
设置Response.Expires为正数大概0,就克制了缓存。对第2个属性Response.ExpiresAbsolute的设置,同意指定在一个特别工夫到来时内容过时。
<%Response.ExpiresAbsolute=#May31,200113:30:15#%>
除利用Response工具来设置到期工夫,还能够在HTML文件头部写<META>标志。只管代办署理</p>缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全 |
|