<<<返回

利用缓存输出
通常,Active Server Page在服务端执行，每一句执行的结果都会立即发送到浏览器上显示出来。例如下面这个例子： <html> <head><title>buffer example</title></head> <body> <%
for i=1 to 500
response.write(i&”<BR>”)
next
%>
</body>
</html>
这个脚本在屏幕上显示从1到500，每一句命令执行后结果都立即显示，你可以实时的看到执行结果。
在某些场合下，你也可以利用缓冲区来延缓执行过程，当你利用缓冲区时，直到整个Active Server Page执行结束才会将结果输出到浏览器上。下面是利用buffer修改后的例子：
<% Response.Buffer=True %>
<HTML>
<HEAD><TITLE>buffer Example</TITLE></HEAD>
<body>
<%
For i=1 to 500
Response.write(i&”<br>”)
NEXT
%>
</body>
</html>
这个脚本和前面的那个仅有一个区别，在脚本第一行，将Response对象的Buffer属性设置为True。那么这页执行的时候，这个主页的所有内容会同时显示在浏览器上，这个主页会存在缓存区中直到脚本执行结束。
注：你可以利用Internet Service Manage来将Buffer的默认值设为True。在Application Configuation对话框的App Options页中选择Enable Buffering.
任何对Buffer属性的修改的语句都必须在主页和Active Server Page脚本输出前面，如果你试图在HTML或者脚本输出后面修改Buffer属性，那么你的程序就会出错。
利用缓存程序，你就可以根据某种条件来显示不同的主页，下面是随机显示的一个例子。
<% Response.Buffer=True %>
<HTML>
<HEAD><Title>第一页</title></head>
<Body>
这是第一页。
</body>
</html>
<%
Randomize
If Int(2*rnd)=1 then Response.End
Response.Clear
%>
<HTML>
<HEAD><TITLE>第二页</title></head>
<body>
这是第二页。
</body>
</html>
在这个例子中，使用了Response对象的两个新的方法：End方法和Clear方法。End方法会立即停止Active Server Pages的执行和相应结果。你在执行End方法时不需要考虑是否进行了缓存输出。在这个例子中，End方法被用来防止在显示第一页时、第二页也显示出来。
clear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer，仅仅是使用了缓存输出的时候你才可以利用clear方法，在这里面，clear方法是用来防止显示第二个页面时，第一个页面也显示出来。它把第一个页面从buffer中清空了。
Response对象中在缓存输出中还用到了另一个方法是flush，将缓存中的东西立即显示出来，和clear方法一样的是，该方法在脚本前面没有将buffer属性设置为true时会出错，和end方法不同的是，该方法调用后，该Active Server Page继续执行。
一般，你并不需要缓存输出一个Active Server Page,这通常是个坏主意，在大的HTML主页或者运行较长的脚本中，利用缓存显示结果通常会使得用户感到迷惑。
如果你希望根据条件显示不同主页内容，你完全可以只是简单的利用VB脚本来做判断，例如，下面这个例子实现的上面例子的同样功能而没有使用缓存。
<%
Randomize
if INT(2*RND)=1 then
%>
<HTML>
<HEAD><TITLE>第一页</TITLE></HEAD>
<BODY>
这是第一页
</BODY>
</HTML>
<% ELSE %>
<HTML>
<HEAD><TITLE>第二页</TITLE></HEAD>
<BODY>
这是第二页
</body>
</html>
<% END IF %>
只有一种场合下buffer是必须的，那就是在主页内容已经确定后你却需要改变主页的header。这是你除了将buffer属性设为True外别无选择。那么，下面有关部分会有更加详细的介绍。