単純なNodeJSHTTPサーバーからのさまざまな応答を試しています。私が達成しようとしている効果は、Webページのより高速な視覚的レンダリングです。応答は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')
、トリックを実行することです。
データが送信されるのに十分なサイズになるまで、ノードは書き込みをバッファリングしていますか?その場合、チャンクサイズは構成可能ですか?