Для примера привожу минимум кода, который показывает ошибку:
require('http').createServer(function (req, res) {
var test = new Buffer(4);
test.writeUInt32BE(2886731494, 0);
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(test);
}).listen(81, myServerIp);
Код должен вернуть ответ с бинарными данными, при этом Content-Length выставится ровно в 4 байта. Это и есть цель.
Проблема:
Сервер запущен на linux(gentoo);
клиент(браузер) запущен под linux(ubunta, suse), ответ отдаётся за 1-3 ms,
клиент на windows 7, ответ за 220-240 ms.
Результаты схожие на разных машинах. На linux быстро, на виндовс медленно.
Когда этаже задача отработает одинаково быстро вне зависимости от OS клиента:
— Если этот же сервер запущен на windows.
— Если туже задачу реализовать например apache/php — echo pack('N', 2886731494);
— Если res.end(test.toString()), но длина заголовка станет не 4 байта, а 8. Что не допустимо.
— Если клиент обратится по протоколу http 1.0 (к сожалению нет возможности принудительно указать в ответе)
Кто что посоветует? ;)
P.s. браузеры пробывались разные, замер скорости брался из файрбага и аналогов.