【问题标题】:Is it possible to get unbuffered web browser output?是否可以获得无缓冲的网络浏览器输出?
【发布时间】:2009-05-28 19:48:19
【问题描述】:

我有一个小的 cgi 脚本,用于获取和验证 Nagios 的配置文件。典型的运行时间是几分钟,我想在运行期间在浏览器中得到一些反馈。

为了说明我想要发生的事情,考虑一下:

#!/bin/sh
echo "Content-type: text/plain"
echo

for i in A B C D E
do
        echo $i
        sleep 10
done

当我通过 telnet 或 wget 对此脚本执行 GET 时,输出一次一行,间隔十秒(“A”...“B”...“C”...很快)。

当我尝试在普通浏览器中打开它时,浏览器似乎将其全部缓冲并在脚本完成时显示输出(50 秒的静默...“ABCDE”)。

是否可以让浏览器在数据到达后立即将其呈现给用户?

【问题讨论】:

    标签: cgi buffering browser


    【解决方案1】:

    我相信您想要的是使用“html 块编码”。这让服务器可以向浏览器发送一个它可以开始呈现的 HTML“块”。每当您使用“Response.Write”时,ASP 和 ASP.Net 都会为您处理此问题。

    以下是一些参考资料:

    【讨论】:

      【解决方案2】:

      使用Wireshark

      【讨论】:

      • 感谢您的提示,嗅探让我意识到 gzip/deflate 编码使服务器在一个数据包中发送整个输出。取消设置 Accept-Encoding 标头后,数据以多个数据包的形式到达。然而,浏览器的行为是相同的 - 在连接关闭之前不会显示任何内容。
      【解决方案3】:

      在向响应缓冲区写入足够多的内容后使用 Response.Flush()....

      http://www.stephanunrau.com/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 2020-11-06
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多