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