Я экспериментирую с различными ответами от простого HTTP-сервера NodeJS.
Эффект, которого я пытаюсь достичь, - более быстрая визуализация веб-страницы. Поскольку ответ передается в браузер с помощью 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 буферизует мои записи до тех пор, пока данные не станут достаточно большими для отправки? Если это так, настраивается ли размер чанка?