muzuiget
2014-02-27 16:22:05 +08:00
靠,flush,还以为是 flash 拼写错误。
24 楼那个示例,不是 Chrome 的 bug,而是你自己的 bug。即时输出页面内容哪能这么用,你这种用法不是即时输出,而是响应一个 http 请求你花了 3 秒,每秒强制输出一部分,看起来就像不稳定的网络一样。你第一次 flush() 后 Content-Length 已经确定下来了,但你又继续输出更多内容,Chrome 收到比协议头声明中的更多的内容,之前的版本可能是做了容错不忽略,最近版本是忽略,我觉得忽略才是正确的,因为这确实不标准的用法。PHP 中这种搞就会有一个警告出来的。
解析 html 你不一次输出全部 html 文本浏览器哪知道怎么解析 DOM,你用 response.setContentType("text/plain"); 理论上倒还行,因为纯文本不需要解析 DOM,收到多少就能显示多少,就像图片一样。要么干脆设定不用 Content-Length,在浏览器自己在 tcp 层推断出长度。