【问题标题】:Browser is buffering the response and displaying it all together although it is supposed to be in chunks浏览器正在缓冲响应并将其全部显示,尽管它应该是块
【发布时间】:2012-04-16 21:46:00
【问题描述】:

我想在无限循环中从服务器获得一些数据流。在服务器端,php 以一定频率刷新输出,但我必须将每个数据块设置为某个特定大小(例如 1KB)。

我认为这是由浏览器缓冲响应引起的。所以我想尝试通过javascript来操纵浏览器的这种行为。

【问题讨论】:

  • 一些浏览器只缓存前几百 kb,之后他们会像预期的那样对其进行分块。您可以通过从 XHR 对象调用 readyState 3 轻松测试它。
  • 您是否尝试过通过单个 Ajax 请求获取块?
  • PHP 手册php.net/manual/en/function.flush.php 中有一些关于缓冲和各种浏览器的信息,但我严重怀疑您是否可以使用 JavaScript 以这种方式操纵浏览器行为
  • @Nev Stokes 感谢我实际上检查了页面的链接,但我认为我应该更仔细地检查:) 有一个注释看起来非常有用,我以前没有注意到。顺便说一句,我的实际意图不是为了节省时间而使用多个请求。

标签: php javascript stream buffer flush


【解决方案1】:

解决方案是接受浏览器缓冲响应并使用您选择的任何空格将块填充到缓冲区大小。

您必须知道每个浏览器缓冲多少才能决定填充字节。这可以通过对每个浏览器进行测试,然后在服务器端检查用户代理信息来完成。

另一种方法当然是使用 websockets 代替

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多