在 Node Web 服务器中,我想在特定点刷新 HTML 内容,如下所示:
- 第一个块:
<html><head> ... </head>
- 第二块:
<body> ... </body>
- 第三块:
</html>
e.g.:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<html><head> ... </head>');
setTimeout(function() {
res.write('<body> ... </body>');
setTimeout(function() {
res.end('</html>');
}, 2000);
}, 2000);
}).listen(8000);
上面的代码有响应<html><head> ... </head><body> ... </body></html>
在单个块中大约 4 秒后,但是我注意到块应该 >= 4096 字节才能立即刷新:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write(Array(4097).join('*'));
setTimeout(function() {
res.write(Array(4097).join('#'));
setTimeout(function() {
res.end('done!');
}, 2000);
}, 2000);
}).listen(8000);
上面代码的响应也需要大约 4 秒,但块会立即刷新。我可以填充小块来填充至少 4096 字节,只是想知道是否还有另一种“非 hacky”方法。
在 PHP 中,这可以通过以下方式实现flush()
/ob_flush()
并禁用output_buffering
FWIW,我正在构建一个 Web 服务器工具来试验 HTML 块输出的几种配置,并在它们之间给定延迟,以便分析现代浏览器如何处理它并选择最佳配置。
Thanks