【问题标题】:Classic asp - When to use Response.flush?经典 asp - 何时使用 Response.flush?
【发布时间】:2008-09-25 19:16:55
【问题描述】:

我们有一个令人痛苦的缓慢报告。我添加了一个 Response.flush,它似乎好多了。使用这种方法有哪些注意事项。

【问题讨论】:

    标签: asp-classic


    【解决方案1】:

    如果 Response.Buffer 未设置为 true,那么您将收到运行时错误。此外,如果在 ASP 页面上调用 Flush 方法,则服务器不支持该页面的 Keep-Alive 请求。

    您还需要了解您是否使用基于表格的设计,因为在发送整个表格之前它不会在某些浏览器中呈现。这意味着如果您有 10,000 行,用户仍然需要在他们真正看到它们之前等待所有 10,000 行传输。

    【讨论】:

    • 什么是 Keep-Alive 请求?
    • 你最近在 Keep-Alive 上测试过这些信息吗?以我的经验,IIS 只是使用分块编码,应该不需要它来关闭连接。
    【解决方案2】:

    扩展Wayne's answer:如果你做的任何事情都需要设置Response.Headers,在Response的任何部分都被Flushed之后你就不能这样做了。

    【讨论】:

    • 还有什么,请记住,如果您的答案被投票通过,它会显得乱序。
    • 哦,我没有意识到。谢谢安东尼。 “也”是对韦恩关于缓冲区需要设置为 True、呈现表格问题和保持活动请求的回答的回应。
    【解决方案3】:

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

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

    您应该避免经常刷新,因为 IIS 将不得不经常使用资源刷新页面而不是处理脚本。即:每 50 行刷新一次,而不是每行刷新一次。

    【讨论】:

      【解决方案4】:

      Response.flush 可用于将报告的标题发送到浏览器。然后显示“加载消息”,然后您的报告处理并刷新报告,然后执行一小段 javascript 以隐藏“加载”消息。

      这样您就可以让您的用户知道正在发生的事情,这样他们就不会按 STOP BACK 或只是关闭窗口,否则他们可能会受到诱惑。

      另外,我已经玩了很多浏览器渲染什么表格,而 IE 似乎是唯一不渲染表格的浏览器,除非收到标签。这意味着所有行都可以逐渐出现在其他浏览器中,而不是在 IE 中。

      【讨论】:

        猜你喜欢
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多