网络编程
位置:首页>> 网络编程>> Asp编程>> Response.Flush的使用心得

Response.Flush的使用心得

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

标签:Response.Flush,缓存

(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来解决。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com