Я экспериментирую с различными ответами простого 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')
, если только уже записанные данные не будут достаточно длинными, поэтому, например, instanceres.write(new Array(2000).join('1'))
вместо thatres.write('hello')
сработает.
Буферизирует ли Node мои записи до тех пор, пока данные не станут достаточно большими для отправки? Если это так, можно ли настроить размер блока?