使用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。