我正在尝试从简单的NodeJS HTTP服务器中尝试不同的响应方式。我希望实现更快速的网页可视化渲染效果。由于响应是通过 transfer-encoding: chunked
(对吧?)流式传输到浏览器,因此我想在延迟之后先渲染页面布局,然后再渲染其余数据。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'text/html'
, 'Transfer-Encoding': 'chunked'
});
res.write('<html>\n');
res.write('<body>\n');
res.write('hello ');
res.write('</body>\n');
res.write('</html>\n');
setTimeout(function () {
res.end('world');
},1500);
}).listen(3000, '127.0.0.1');
事实上,似乎除非已写入的数据足够长,否则响应不会在
res.end('world')
之前发送,因此例如res.write(new Array(2000).join('1'))
而不是 res.write('hello')
可以解决这个问题。Node是否将我的写入缓冲直到数据足够大才发送?如果是这种情况,块大小是否可配置?
true
。你提供的相关问题暗示这是平台特定的,你有什么想法吗? Chrome 检查器只输出完成的响应时间,两种情况都一样。 数据在关闭标签之前就已经被渲染出来了,使用纯文本时也是同样的行为。 - Daniel\n
,curl似乎会进行缓冲)。 - Daniel