经典asp - 何时使用Response.flush?

9

我们有一份非常慢的报告。我添加了Response.flush,速度好多了。使用这种方法需要注意什么问题?

4个回答

9
如果 Response.Buffer 没有设置为 true,那么您将会得到一个运行时错误。此外,如果在 ASP 页面上调用 Flush 方法,则服务器不会为该页面执行 Keep-Alive 请求。
如果您使用基于表格的设计,请注意,在某些浏览器中,直到整个表格被发送之前,它才会呈现。这意味着如果您有 10,000 行数据,用户仍需要等待所有 10,000 行数据传输完毕,然后才能看到它们。

什么是Keep-Alive请求? - Brian G
1
你最近测试过Keep-Alive的信息吗?根据我的经验,IIS只使用分块编码,不需要关闭连接。 - AnthonyWJones

6

扩展Wayne的答案:如果你需要设置Response.Headers,那么在Response的任何部分被Flush之后就不能这样做了。


另外,请记住,如果您的答案被投票赞成,它将出现在顺序之外。 - AnthonyWJones
哦,我没意识到。谢谢安东尼。 “也是”是对韦恩关于需要将缓冲区设置为True、表格问题和保持连接请求的回答的回应。 - Nikki9696

3

这样刷新响应没有问题。一般建议先缓存整个页面,然后再将其刷新到客户端以获得更好的性能,但对于长时间运行的脚本,最好向客户端显示一些数据,以便用户看到有事情正在发生。

请记住,仅在从头开始缓冲页面时手动刷新才会产生适当的效果,否则IIS将自动刷新(将页面流式传输到客户端)。

应避免频繁刷新,因为IIS将不得不使用资源频繁刷新页面,而不是处理脚本。例如:每50行刷新一次,而不是每一行。


2

Response.flush 可以用于向浏览器发送报告的头部。然后显示一个“加载消息”,接着进行报告处理并刷新报告,最后执行一小段 JavaScript 代码来隐藏“加载”消息。

这样做可以让用户知道正在发生某些事情,因此他们不会按下“停止返回”或仅仅关闭窗口,而这些都可能是他们会尝试做的。

另外,我已经研究了很多浏览器对表格的呈现方式,IE 似乎是唯一一个在收到<table>标签之前不呈现表格的浏览器。这意味着所有行在其他浏览器中可能逐渐出现,但在 IE 中不会。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接