Я создаю сайт, используя nodejs
. На странице моего сайта я прошу Google, затем проанализирую его результаты и отправлю их пользователю. Я использую request
модуль npm
для запроса в Google. У модуля request
есть флаг с именем time
, что, если я установлю его в значение true, request
даст мне подробную информацию о времени запроса. Я прошу Google, как это:
var express = require('express');
var router = express.Router();
var request = require('request');
router.get('/', function(req, res, next) {
return request({
url: 'https://<google-ip>/search?q=' + req.query.query + '&num=30&start=0',
headers: {
'host': 'www.google.com'
},
strictSSL: false,
time: true,
gzip: true,
}, function (error, response, body) {
res.send(
{
'starts_at: ':{
'timings.socket':response.timings.socket,
'timings.lookup':response.timings.lookup,
'timings.connect': response.timings.connect,
'timings.response': response.timings.response,
'timings.end': response.timings.end
},
'duration: ':{
'timingPhases.wait': response.timingPhases.wait,
'timingPhases.dns': response.timingPhases.dns,
'timingPhases.tcp': response.timingPhases.tcp,
'timingPhases.firstByte': response.timingPhases.firstByte,
'timingPhases.download': response.timingPhases.download,
'timingPhases.total': response.timingPhases.total
}
});
});
});
module.exports = router;
И вывод здесь:
{
starts_at:
{
timings.socket: 3.725953000015579,
timings.lookup: 3.725953000015579,
timings.connect: 117.76885500003118,
timings.response: 692.0431389999576,
timings.end: 1220.5685750000412
},
duration:
{
timingPhases.wait: 3.725953000015579,
timingPhases.dns: 0,
timingPhases.tcp: 114.0429020000156,
timingPhases.firstByte: 574.2742839999264,
timingPhases.download: 528.5254360000836,
timingPhases.total: 1220.5685750000412
}
}
Но когда я ищу тот же запрос в Chrome, я получаю эти результаты:
Я не знаю, почему эти цифры очень разные. tcp
время в nodejs
занимает около 114 миллисекунд, а в хроме - около 0 миллисекунд. Кроме того, и сервер Chrome, и nodejs
находятся в одном регионе, но time-to-first-byte
в nodejs
медленнее, чем Chrome, примерно на 245 миллисекунд.
Как улучшить nodejs
, чтобы он был похож на Chrome?