【发布时间】:2008-09-25 19:16:55
【问题描述】:
我们有一个令人痛苦的缓慢报告。我添加了一个 Response.flush,它似乎好多了。使用这种方法有哪些注意事项。
【问题讨论】:
标签: asp-classic
我们有一个令人痛苦的缓慢报告。我添加了一个 Response.flush,它似乎好多了。使用这种方法有哪些注意事项。
【问题讨论】:
标签: asp-classic
如果 Response.Buffer 未设置为 true,那么您将收到运行时错误。此外,如果在 ASP 页面上调用 Flush 方法,则服务器不支持该页面的 Keep-Alive 请求。
您还需要了解您是否使用基于表格的设计,因为在发送整个表格之前它不会在某些浏览器中呈现。这意味着如果您有 10,000 行,用户仍然需要在他们真正看到它们之前等待所有 10,000 行传输。
【讨论】:
扩展Wayne's answer:如果你做的任何事情都需要设置Response.Headers,在Response的任何部分都被Flushed之后你就不能这样做了。
【讨论】:
这样刷新响应没有问题。通常建议缓冲整个页面并将其刷新到客户端以获得更好的性能,但对于长时间运行的脚本,通常最好向客户端显示一些数据,以便用户看到正在发生的事情。
请记住,手动刷新只有在从一开始就缓冲页面时才有适当的效果,否则 IIS 将自动刷新(将页面流式传输到客户端)。
您应该避免经常刷新,因为 IIS 将不得不经常使用资源刷新页面而不是处理脚本。即:每 50 行刷新一次,而不是每行刷新一次。
【讨论】:
Response.flush 可用于将报告的标题发送到浏览器。然后显示“加载消息”,然后您的报告处理并刷新报告,然后执行一小段 javascript 以隐藏“加载”消息。
这样您就可以让您的用户知道正在发生的事情,这样他们就不会按 STOP BACK 或只是关闭窗口,否则他们可能会受到诱惑。
另外,我已经玩了很多浏览器渲染什么表格,而 IE 似乎是唯一不渲染表格的浏览器,除非收到标签。这意味着所有行都可以逐渐出现在其他浏览器中,而不是在 IE 中。
【讨论】: