|
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 个是“瀑布流”式输出的。 |
|