我们有一份非常慢的报告。我添加了Response.flush,速度好多了。使用这种方法需要注意什么问题?
扩展Wayne的答案:如果你需要设置Response.Headers,那么在Response的任何部分被Flush之后就不能这样做了。
这样刷新响应没有问题。一般建议先缓存整个页面,然后再将其刷新到客户端以获得更好的性能,但对于长时间运行的脚本,最好向客户端显示一些数据,以便用户看到有事情正在发生。
请记住,仅在从头开始缓冲页面时手动刷新才会产生适当的效果,否则IIS将自动刷新(将页面流式传输到客户端)。
应避免频繁刷新,因为IIS将不得不使用资源频繁刷新页面,而不是处理脚本。例如:每50行刷新一次,而不是每一行。
Response.flush 可以用于向浏览器发送报告的头部。然后显示一个“加载消息”,接着进行报告处理并刷新报告,最后执行一小段 JavaScript 代码来隐藏“加载”消息。
这样做可以让用户知道正在发生某些事情,因此他们不会按下“停止返回”或仅仅关闭窗口,而这些都可能是他们会尝试做的。
另外,我已经研究了很多浏览器对表格的呈现方式,IE 似乎是唯一一个在收到<table>标签之前不呈现表格的浏览器。这意味着所有行在其他浏览器中可能逐渐出现,但在 IE 中不会。