当前位置: 网学 > 编程文档 > ASP > 正文

如何增强ASP程序性能(三)

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/17
下载{$ArticleTitle}原创论文样式
f)
Next
Response.Write "</tr>"
Wend
%>
</table>

  当response buffering关闭时,这个技巧非常得有用。最好是打开response buffering,这样就可以看到批量的Response.Wwrite是如何提高了程序性能。

技巧13:使用< OBJECT >标记引用对象

  如果需要引用除代码路径外的对象(尤其是服务器、Application范围的对象),请在Global.asa文件中使用
< object runat=server id=objname >标记来定义它们,而不要使用Server.CreateObject方法。使用Server.CreateObject方法可以立即创建对象,这样如果随后不使用它,就浪费了资源。使用
< object id=objname >标记可以定义对象objname,但是直到它的属性或者方法首次使用时,objname才实际创建。

技巧14:避免在循环中串联字符串

许多人在循环中建立一个字符串,就象下面的样子:


s = "<table>" & vbCrLf
For Each fld in rs.Fields
s = s & " <th>" & fld.Name & "</th> "
Next

While Not rs.EOF
s = s & vbCrLf & " <tr>"
For Each fld in rs.Fields
s = s & " <td>" & fld.Value & "</td> "
Next
s = s & " </tr>"
rs.MoveNext
Wend

s = s & vbCrLf & "</table>" & vbCrLf
Response.Write s

  这存在几个问题。首先是重复的连接字符串消耗二次方的时间,而且,运行的时间与计算的字段数量也是平方的关系。下面的简单例子更清楚地说明这一点:


s = ""
For i = Asc("A") to Asc("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 % >)的方法提高程序性能。如果response buffering打开(也应该打开),这将很快,因为Response.Write仅仅附加数据在缓冲区的尾部,而且不需要再分配。

  如果用JScript连接字符串,强烈建议使用“+=”操作符,就是说,使用s+=“字符串”,而不是s = s+“字符串”。

技巧15:打开浏览器和代理的缓冲

  默认情况下,ASP禁止了浏览器和代理的缓冲功能。如果有一个每次都不要更新的页面,就应该打开浏览器和代理的缓冲,这将允许浏览器和代理在一段时间内使用该页面的“缓冲”拷贝数据。缓冲能够大大地减轻服务器的数据转载量,并提高用户的浏览性能。 哪些类别的动态页面适合被缓存呢?下面是一些例子:


天气页面,每5分钟更新一次
新闻或版本列表页面,每天更新2次
   注意:使用浏览器或者代理缓存后,

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号