由于Response 对象的BufferOutput 属性预设为True,所以要输出到客户端的数据暂时都储存在缓冲区内,等到所有的事件程序以及所有的页面对象全部解译完毕后,才将所有在缓冲区中的数据送到客户端的浏览器。接下来我们做个实验来观察缓冲区如何运作:
<Html>
<%
Response.Write("清除之后的数据<Br>")
%>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object,e As Eventargs)
Response.Write("清除缓冲区之前的数据" & "<Br>")
Response.Clear()
End Sub
</Script>
</Html>
上述程序代码范例首先在Page_Load 事件中送出「清除缓冲区之前的数据」这一行,此时的数据存在缓冲区中。接着使用Response 对象的Clear 方法将缓冲区的数据清除,故刚刚送出的字符串已经被清除。然后IIS 开始读取HTML 组件的部分,最后将结果送至Client 端的浏览器。由执行结果只出现「清除之后的数据」得知,使用Clear 方法之前的数据并没有出现在浏览器上,由此可知程序在一开始是存在缓冲区内。接下来我们将相同的程序中加入「Response.BufferOutput=False 」叙述:
<Html>
<%
Response.Write("清除之后的数据<Br>")
%>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object,e As Eventargs)
Response.BufferOutput=False
Response.Write("清除缓冲区之前的数据" & "<Br>")
Response.Clear()
End Sub
</Script>
</Html>
我们可以发现执行的结果并没有因为使用Clear 方法而将缓冲区的数据清除,这表示数据是直接输出而没有存放在缓冲区内。
文章来源于领测软件测试网 https://www.ltesting.net/