仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 448|回复: 8
打印 上一主题 下一主题

[学习教程] ASP编程:怎样加强ASP程序功能(3)

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:54:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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安全
分手快乐 该用户已被删除
沙发
发表于 2015-1-20 06:03:48 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
老尸 该用户已被删除
板凳
发表于 2015-1-26 13:29:13 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
柔情似水 该用户已被删除
地板
发表于 2015-2-4 15:13:14 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
只想知道 该用户已被删除
5#
发表于 2015-2-10 02:46:02 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
谁可相欹 该用户已被删除
6#
发表于 2015-2-28 16:07:19 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
简单生活 该用户已被删除
7#
发表于 2015-3-10 01:35:17 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
莫相离 该用户已被删除
8#
发表于 2015-3-17 04:07:49 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
爱飞 该用户已被删除
9#
发表于 2015-3-23 18:18:16 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 04:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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