ASP.NET中Response.BufferOutput属性的使用技巧
BufferOutput属性用于获取或设置一个值,该值指示是否缓冲输出并在处理完整个页之后发送它。该属性默认值是true,因此我们通常的页面中的输出内容都是在页面处理完成之后才发送给客户端由浏览器呈现出来。如果页面要处理的内容很多,可能很长时间才能看到页面上的内容。这个时候有两种方法可以让信息逐步显示,这样就能知道当前程序运行到哪一步了。
方法1:BufferOutput默认值为true,这个时候可以借助Flush方法和Clear方法将当前缓冲区的信息输出。这个方法比较通用,当你的页面在处理一个复杂的程序的时候,可以即时输出一些提示信息。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ShowInfo("中", 100);
Response.Flush();
Response.Clear();
Thread.Sleep(1000);
ShowInfo("国", 5);
Response.Flush();
Response.Clear();
Thread.Sleep(1000);
}
}
private void ShowInfo(string it, int count)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < count; i++)
{
sb.Append(it);
}
sb.Append("<br/>");
Response.Write(sb.ToString());
}方法2:把BufferOutput值设为false,这个时候缓冲区的内容会立即发送给客户端显示。这种方法有性能问题,因为没有使用缓冲输出,不过代码简洁一些。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Response.BufferOutput = false;
ShowInfo("中", 100);
Thread.Sleep(1000);
ShowInfo("国", 5);
Thread.Sleep(1000);
}
}
private void ShowInfo(string it, int count)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < count; i++)
{
sb.Append(it);
}
sb.Append("<br/>");
Response.Write(sb.ToString());
}在使用的时候有两个问题需要注意:
一是IE浏览器在缓冲区数据不少于256字节的情况下才会输出到客户端,经测试FF浏览器没有这个问题。
二是UFT8编码的汉字一般占三个字节(Unicode编码是两个字节),这里第一次输出100个汉字是为了保证至少有256个字节的数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Coolite Cool Study 1 在Grid中用ComboBox 来编辑数据
作为Coolite的第一个教程,我想展现给大家能够体现Coolite强大的例子(当然也比官方例子稍微复杂一点)。2009-05-05
ASP.NET中ListView(列表视图)的使用前台绑定附源码
ListView(列表视图)想必大家都知道吧,接下来本文将介绍下ListView的使用前台绑定,感兴趣的你可不要错过本文了哈2013-03-03
.Net Core中使用ExceptionFilter过滤器的方法
这篇文章主要介绍了.Net Core中使用ExceptionFilter过滤器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-03-03
ASP.NET Core MVC学习教程之路由(Routing)
这篇文章主要给大家介绍了关于ASP.NET Core MVC学习教程之路由(Routing)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core MVC具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-07-07
Linux(Ubuntu)下搭建ASP.NET Core环境
本文给大家介绍的是无需安装mono,在Linux(Ubuntu14.04.4 LTS)下搭建ASP.NET Core环境 继续.NET跨平台,希望对大家能够有所帮助。2016-07-07


最新评论