曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2942|回复: 0
打印 上一主题 下一主题

response 的 buffer 属性,clear,end,flush 方法

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-4-5 19:00:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
response 对象的 buffer 用来决定页面输出是否被缓冲,它只有 2 个值,真或假;为真时,页面先被缓冲,等装载完后,再一块儿输出来;为假时,页面输出不被缓冲,即一边输出一边显示。用下面的代码可以直观的感知这个属性:
<[email=%@LANGUAGE=]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="65001" %>
<% response.buffer = false %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<%
for i = 1 to 100000
response.Write(i & " ")
next
%>
</body>
</html>
这个代码在页面上输出 1 到 100000 的数字,在不进行页面缓冲时,你会看到这些数字像一个瀑布一样从上到下铺满页面。这种现象类似与,网速较慢时,你在访问一个大的页面时,页面也是从上到下这么加载的。

需要注意的是,<% response.buffer = false %> 这句话需要设置在 HTML 输出之前,如果不是这样,就会出现“ASP 1057 (0x80004005) 打开缓冲后不能将其关闭”的错误提示。如果是将 buffe 设置为 ture,那这个设定语句就不要求要放在 HTML 输出之前,而放在 HTML 内部也是可以的。

当 buffer 的值为 true 时,整个页面会先被缓存起来,然后一次性将其输出。

这里有 3 个相关的方法:Clear, End, Flush 。

Clear 方法用以清除任何缓冲的 HTML 输出。
End 方法用以停止处理 ASP 文件并返回当前的结果。
Flush 方法会立即将缓冲区的内容输出。

下面代码演示这几个方法:
<%

for i = 1 to 1000
response.Write(i & " ")
if i = 500 then response.Clear()
next
%>
这段代码只会输出 501 到 1000 这 500 个数。
<%
for i = 1 to 1000
response.Write(i & " ")
if i = 500 then response.End()
next
%>
这段代码只会输出 1 到 500 这 500 个数。
<%

for i = 1 to 1000
response.Write(i & " ")
if i = 500 then response.flush()
next
%>
这段代码会输出全部数字,但是前 500 个是一次性输出的,后 500 个是“瀑布流”式输出的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 06:20 , Processed in 0.084263 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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