ASP.NET中Response.BufferOutput的使用技巧
来源:互联网 发布:软件项目人员管理制度 编辑:程序博客网 时间:2024/05/22 00:34
BufferOutput属性用于获取或设置一个值,该值指示是否缓冲输出并在处理完整个页之后发送它。该属性默认值是true,因此我们通常的页面中的输出内容都是在页面处理完成之后才发送给客户端由浏览器呈现出来。如果页面要处理的内容很多,可能很长时间才能看到页面上的内容。这个时候有两种方法可以让信息逐步显示,这样就能知道当前程序运行到哪一步了。
方法1:BufferOutput默认值为true,这个时候可以借助Flush方法和Clear方法将当前缓冲区的信息输出。这个方法比较通用,当你的页面在处理一个复杂的程序的时候,可以即时输出一些提示信息。
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 if (!IsPostBack)
4 {
5 ShowInfo("中", 100);
6 Response.Flush();
7 Response.Clear();
8 Thread.Sleep(1000);
9
10 ShowInfo("国", 5);
11 Response.Flush();
12 Response.Clear();
13 Thread.Sleep(1000);
14 }
15 }
16
17 private void ShowInfo(string it, int count)
18 {
19 StringBuilder sb = new StringBuilder();
20 for (int i = 0; i < count; i++)
21 {
22 sb.Append(it);
23 }
24 sb.Append("<br/>");
25 Response.Write(sb.ToString());
26 }
2 {
3 if (!IsPostBack)
4 {
5 ShowInfo("中", 100);
6 Response.Flush();
7 Response.Clear();
8 Thread.Sleep(1000);
9
10 ShowInfo("国", 5);
11 Response.Flush();
12 Response.Clear();
13 Thread.Sleep(1000);
14 }
15 }
16
17 private void ShowInfo(string it, int count)
18 {
19 StringBuilder sb = new StringBuilder();
20 for (int i = 0; i < count; i++)
21 {
22 sb.Append(it);
23 }
24 sb.Append("<br/>");
25 Response.Write(sb.ToString());
26 }
方法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());
}
{
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个字节的数据。
- ASP.NET中Response.BufferOutput的使用技巧
- asp.net中Response.write与Response.Redirect同时使用
- Response.Flush和Response.BufferOutput
- ASP.NET中Response的基本用法
- 在ASP.NET中使用Response.ContentType="类型名"
- ASP.NET-019:UpdatePanel中无法使用Response问题
- asp.net中使用response.write造成界面变形问题的解决办法
- ASP.NET中使用UpdatePanel时用Response输出出现错误的解决方法
- asp.net中WebUserControl的使用小技巧
- 【.NET 】ASP.NET中Response.End()异常
- 【.NET 】ASP.NET中Response.End()异常
- asp.net中打开文件的方法Response.WriteFile();
- asp.net中Server.Transfer和Response.Redirect的区别
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- ASP.NET中httpResponse与Response
- asp.net中Response.Write用法小结
- nested exception is javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Yo
- oracle的权限管理
- 页面布局的理解【div+css】
- 尼泊尔宣布将重测珠穆朗玛峰高度
- PC 110203 Hartals //水题 Hash 模拟
- ASP.NET中Response.BufferOutput的使用技巧
- 正则表达式-元字符
- 收集的Xtreme.Toolkit.Pro 编译简单教程
- 程序员是这样炼成的(1)-订制自己的职业规划之路
- WSDL规范1.1_中文版
- zeromq源代码分析5-1------管道相关的数据结构yqueue, ypipe, pipe等
- NSArray 函数整理
- javascript css 兼容性笔记
- Android 中图像特效处理方法小结