当前位置: 首页 > 图文教程 > 网络编程 > ASP > 如何增强ASP程序性能(3)

ASP
ASP技巧:在Access数据库中重命名表
用ASP编程实现网络内容快速查找
比较ASP生成静态HTML文件的几种方法
ASP实例:实现邮件发送普通附件和嵌入附件
如何用ASP实现去掉三个最高分和三个最低分
ASP实例:Access为后台数据库的网站统计系统
用标签替换的方法生成静态网页
例程:用ASP判断文件地址是否有效
学ASp动态网页必备:常用的38个函数
ASP教程:初次接触学习ASP脚本程序
ASPJPEG水印中关于文字水印的帮助文档(中英文对照)
ASP例子:ASP把汉字转化为拼音的函数
ASP教程:学习ASP应用Cookies的技巧
ASP入门:认识ASP程序所使用的几种脚本语言
初学者的ASP教程:常用ASP内置函数
ASP初级教程之ASP对表单和用户输入的处理
学习ASP文件引用的方法
用ASP编写更人性化的弹出窗口程序
谈谈学习ASP动态网页制作技术的编程心得
用ASP程序实现网站在线人数统计

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 23 ::
收藏到网摘: n/a

      
   技巧11:使用Response Buffering
  
     通过打开“response
   buffering”可以缓冲一个值得输出的整个页面内容,这将最小化输出到浏览器的数据量,从而提高了整体性能。每一次输出都耗费许多,所以写得越少,效果越好。TCP/IP在发送少量大的数据包时,要比发送大量小的数据包工作效率高,因为它是慢速启动并不断发送的。
  
  
     有2种方法打开Response Buffering。首先,可以使用Internet Services
   Manager为整个应用程序打开response
   buffering,这是推荐的方式,而且在IIS4.0和IIS5.0中,默认状态下,response
   buffering是打开的。其次,在每一页面上,可以在头部放置如下代码开打开response buffering:
  
   < % Response.Buffer = True % >
  
     这段代码必须在任何数据输出到浏览器前被执行(就是说,在任何html内容显示前和在任何cookie被设置前)。通常情况下,为整个应用程序打开response
   buffering是很好的方案,这么做后就不用在每个页面头部设置如上的代码。
  
     关于打开response
   buffering的一个通用问题是:用户必须要等待整个页面全部产生后,才能看到内容。对于一个长时间运行的页面来说,可以设置Response.Buffer=False关闭缓冲。然后,好的策略是利用Response.Flush方法,它将输出所有已被ASP描述的HTML内容到浏览器。比如,在描述了一个1,000行表格的100行后,ASP就可以使用Response.Flush来强迫输出这100行的内容到浏览器,这时用户就可以看到前100行数据,同时其余的行数据正在准备生成。
  
  
     注意,关于上面的1,000行表格输出的例子,对于一些浏览器器来说,除非遇到< /table
   >标记,它们不会输出表格的任何内容。如果这样,可以将表格分割成许多含有少量行的多个表格,然后在每一个表格产生后,调用Response.Flush输出。新版的Internet
   Explorer在整个表格下载后才显示内容,并且,如果定义了表格的列宽度,生成表格的速度将特别快。
  
   关于打开response buffering的另外一个问题是:当生成非常大的页面时,将消耗非常大的服务器内存。
  
   技巧12:批处理单行脚本和Response.Write命令
  
     VBScript语法< % = expression % >的意思是输出expression的数值。如果response
   buffering没有打开,每个这样的语句将按照许多小数据包的形式输出数据到浏览器,这将降低程序性能。因此,请使用下面的技巧:替换紧挨着的多个一行表达式调用为一个调用,用Response.Write名称输出。比如,在下面的例子中,对于每行每个字段的输出,只有一个写操作:
  
  
   <table>
   <% For Each fld in rs.Fields %>
   <th><% = fld.Name %></th>
   <%
   Next
   While Not rs.EOF
   %>
   <tr>
   <% For Each fld in rs.Fields %>
   <td><% = fld.Value %></td>
   <% Next
   </tr>
   <% rs.MoveNext
   Wend %>
   </table>
  
   下面是更有效率的代码,每行一个输出:
  
   <table>
   <%
   For each fld in rs.Fields
   Response.Write ("<th>" & fld.Name & "</th>" & vbCrLf)
   Next
   While Not rs.EOF
   Response.Write ("<tr>")
   For Each fld in rs.Fields %>
   Response.Write("<td>" & fld.Value & "</td>" & vbCrLf)
   Next
   Response.Write "</tr>"
   Wend
   %>
   </table>
  
     当response buffering关闭时,这个技巧非常得有用。最好是打开response
   buffering,这样就可