使用NodeJSstream式传输Http响应

我正在试验一个简单的NodeJS HTTP服务器的各种响应。 我试图实现的效果是更快的网页视觉渲染。 由于响应是stream传输到浏览器与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') ,会做的伎俩。

节点是否正在caching我的写入,直到数据足够大才能发送? 如果是这样的话,块大小是可configuration的吗?

在结束标签被读取之前,浏览器可能不呈现数据。 尝试输出纯文本而不是html标签来testing这个。

你看到任何input到萤火虫/铬检查器?

相关问题

http://nodejs.org/api/stream.html#stream_stream_write_string_encoding_fd

将给定编码的string写入stream。 如果string已经刷新到内核缓冲区,则返回true。 返回false表示内核缓冲区已满,数据将在未来发送出去。

所以输出.write()方法的结果。 看看它是否返回true或false。