【问题标题】:How to forcefully flush HTTP headers in Apache httpd?如何在 Apache httpd 中强制刷新 HTTP 标头?
【发布时间】:2017-02-27 00:16:29
【问题描述】:

我需要定期为客户端生成 HTTP 标头,并且这些标头需要在创建一个标头后直接刷新到客户端。我不能等待正文或其他任何内容,我创建了一个标头,我希望 Apache httpd 将其发送到客户端。

我已经尝试过使用自动刷新、手动刷新、大约 8k 数据的大型标头数据、禁用的 deflate 模块以及可能存在的任何问题,但是 httpd 似乎忽略了我的愿望,直到所有标头都被创建并且之后才刷新它们.根据我生成标头的速度,httpd 进程甚至会将内存增加到数百兆字节,因此似乎缓冲了所有标头。

有什么方法可以让 httpd 刷新单个标头还是不可能?

【问题讨论】:

    标签: apache perl http-headers buffer flush


    【解决方案1】:

    答案是使用NPH-scripts,默认情况下会绕过网络服务器的缓冲区。需要将脚本命名为nph-*,并且通常Web 服务器应该停止缓冲标题并在打印时直接发送它们以及它们是如何打印的。这适用于我的情况,但使用 Apache httpd 需要小心:

    Apache2 sends two HTTP headers with a mapped "nph-" CGI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2010-09-21
      • 2011-01-13
      相关资源
      最近更新 更多