Response.Flush的使用心得

时间:2010-04-08 12:57:00 

(1)Flush的内容至少要有256字节
  经过反复的测试,我得出一个结论。就是flush的内容至少要有256字节。也就是只有编译产生了至少256字节的数据,才能在执行Response.Flush()以后将信息发到客户端并显示。
 以下给出一个示例代码:
<html>
<body>
<%
  Call TestFlush ''Flush测试
%>
</body>
</html>

<%
  ''=================================================
  Sub DoSomeThing    ''模拟一个后台操作
      For i=1 To 10000000
            None = i
      Next
  End Sub
  ''=================================================
  Function LongSpaceStr()  ''制造一个长空字符串
    LongSpaceStr = ""
      For i=1 To 256
            LongSpaceStr = LongSpaceStr& " "
      Next
  End Function
  ''=================================================
  Sub TestFlush ''Flush测试
      '用LongSpaceStr加长输出内容,以使Flush生效
      Response.Write(LongSpaceStr&"正在执行操作,请等待..."&Now())
      Response.Flush()

      Call DoSomeThing
       
      Response.Write("<br>操作成功完成!"&Now())
      Response.Flush() 
  End Sub
  ''=================================================
%>
  (2)Response.Flush()调用之前不能出现未闭合的HTML标签(<html> ,<body>除外)
   比如,以下代码经测试是不行的:  
<html>
<body>
<table ID="MyTable"><tr><td>
<%
  Call TestFlush ''Flush测试
%>
</td></tr></table>
</body>
</html>
<%
''......略去与上例中同样的代码......
%>

  以下代码经测试是可行的: 
<html>
<body>
<table ID="MyTable"><tr><td></td></tr></table>
<%
  Call TestFlush ''Flush测试
%>
</body>
</html>
<%
''......略去与上例中同样的代码......
%>
  以下代码经测试也是可行的: 
<html>
<body>
<%
  Call TestFlush ''Flush测试
%>
<table ID="MyTable"><tr><td></td></tr></table>
</body>
</html>
<%
''......略去与上例中同样的代码......
%>

--------没有在ASP.NET下做类似测试,道理应该是一样。---------

--------夏春涛 xchuntao@163.com--------

语法 Response.Flush


注释 如果在 ASP 页上调用 Flush 方法,则服务器将响应该页上保持活动的请求。

Response.Flush

对于响应缓冲,因为用户在看到东西之前必须等待整个页面生成,所以用户可能够感觉到ASP页面响应比较慢(虽然整体响应时间缩短了);对一个运行时间较长的页面,可以同过Response.Buffer = False 来关掉响应缓冲;但更好的策略是使用
Reponse.Flush方法。这个方法把所有已经由ASP生成的HTML输出到浏览器中。例
如,一个1,000行的大表,在写完100行之后,ASP可以调用Response.Flush来强制把结果写到浏览器中,这样,用户就可以在其余行生成之前先看到100行数据。这个技术能让你两全其美—响应缓冲和渐进式地在浏览器表现数据。

(注意,在上面的1,000行表的例子中,很多浏览器在遇到</table>标记之前可能并不画出整个表。如果想让浏览器逐步显示出数据,可以将一个大表分成多个小表,然后对每个小表调用Response.Flush。新版本的IE会在下载完整个表之前显示表,并且如果指定了表的列宽,显示的速度会更快。)

另外,当产生一个非常大的页面时,响应缓冲可能会消耗掉许多的服务器内存。这个问题也可以通过使用Response.Flush来解决。

标签:Response.Flush,缓存
0
投稿

猜你喜欢

  • 去掉前面的0的sql语句(前导零,零前缀)

    2011-09-30 11:28:19
  • asp怎么实现中文字符串按声母检索

    2010-05-16 21:19:00
  • 通过T_sql语句向其中一次填入一条数据或一次填入多条数据的方式填充数据

    2012-11-30 19:55:34
  • Oracle数据库处理多媒体信息

    2010-07-16 13:01:00
  • asp如何在本地机器上创建缓存?

    2010-06-18 19:27:00
  • 使用SQL Server 2000索引视图提高性能

    2009-01-13 13:47:00
  • 有时间先后的翻页

    2008-05-23 13:14:00
  • MSSQL MySQL 数据库分页(存储过程)

    2012-01-29 18:30:20
  • windows系统下让mysql支持federated的storage engine

    2010-01-20 11:16:00
  • 如何在小空间放置大图片

    2009-08-04 13:04:00
  • MySQL中两种快速创建空表的方式的区别

    2008-12-17 14:34:00
  • Logo 设计准则[译]

    2009-07-22 21:05:00
  • 在原窗口还是新窗口打开链接?

    2009-12-07 21:24:00
  • SQL SERVER的字段类型介绍

    2008-05-23 13:27:00
  • Dreamweaver MX 2004表格设计

    2008-02-03 11:36:00
  • 标志设计如何正确使用字体

    2009-02-16 15:41:00
  • 修正IE6不支持position:fixed的bug[译]

    2009-08-01 12:44:00
  • SQL学习笔记一SQL基础知识

    2011-09-30 11:24:33
  • ASP解析JSON

    2009-12-25 16:34:00
  • br玩转清除浮动

    2007-05-11 16:52:00
  • asp之家 网络编程 m.aspxhome.com