在 Node Web 服务器中,我想在特定点刷新 HTML 内容,如下所示:
- 第一个块:
<html><head> ... </head>
- 第二块:
<body> ... </body>
- 第三块:
</html>
例如:
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);
上面的代码在单个块中约 4 秒后响应<html><head> ... </head><body> ... </body></html>
,但是我注意到块应该 >= 4096bytes 以便立即刷新:
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 块输出的几种配置,它们之间具有给定的延迟,以便分析现代浏览器如何处理它并选择最佳配置。
谢谢