Chrome против узла. Почему узел загружается медленнее, чем Chrome? - PullRequest
0 голосов
/ 04 мая 2020

Сравнение времени отклика узла с Chrome, узел работает медленнее. Я делаю запрос на той же странице; делает два запроса, один с узла и второй с консоли Chrome.

  • Chrome v : последний
  • Node v : 12
  • OS : Windows 64x

Узел:

const fetch = require("node-fetch");

const url =
  "https://poshmark.com/search?query=t%20shirts&availability=sold_out&department=All";
(async () => {
  console.time("Load Time: ");
  await fetch(url);
  console.timeEnd("Load Time: ");
})();

Chrome: Go к URL-адресу и затем запустите его в консоли.

  (async () => {
    console.time("Load Time: ");
    var request = await fetch(location);
    console.timeEnd("Load Time: ");
})();

Результаты:

  • Узел: ~ 3.746s
  • Chrome: 1030.53515625ms

Что мы можем сделать, чтобы это исправить?

Спасибо за помощь.

1 Ответ

0 голосов
/ 04 мая 2020

С этим кодом в node.js, который загружает весь ответ двумя различными библиотеками:

"use strict";

const got = require('got');
const fetch = require("node-fetch");


async function run1(silent) {
    let url = "https://poshmark.com/search?query=t%20shirts&availability=sold_out&department=All";
    url += `&random=${Math.floor(Math.random() * 1000000)}`;
    if (silent) {
        let {body} = await got(url);
    } else {
        console.time("Load Time Got");
        let {body} = await got(url);
        console.timeEnd("Load Time Got");
    }
}



async function run2(silent) {
    let url = "https://poshmark.com/search?query=t%20shirts&availability=sold_out&department=All";
    url += `&random=${Math.floor(Math.random() * 1000000)}`;
    if (silent) {
        let body = await fetch(url).then(res => res.text());
    } else {
        console.time("Load Time Fetch");
        let body = await fetch(url).then(res => res.text());
        console.timeEnd("Load Time Fetch");
    }
}

function delay(t) {
    return new Promise(resolve => setTimeout(resolve, t));
}

async function go() {
    await delay(1000);
    // one throw away run for each to make sure everything is fully initialized
    await run1(true);
    await run2(true);

    // let garbage collector settle down
    await delay(1000);

    await run1(false);
    await delay(1000);
    await run2(false);

}

go();

И, выполнив четыре отдельных раза, я получаю следующие результаты:

Load Time Got: : 967.574ms
Load Time Fetch: : 921.211ms

Load Time Got: 872.823ms
Load Time Fetch: 858.379ms

Load Time Got: 802.700ms
Load Time Fetch: 930.276ms

Load Time Got: 819.646ms
Load Time Fetch: 966.878ms

Итак, я не вижу многократных вторых ответов здесь. Обратите внимание, что я генерирую уникальный параметр запроса для каждого URL, чтобы попытаться победить любое кэширование в любом месте.

Используя аналогичный рандомизированный URL в аналогичном коде в консоли браузера, который загружает все тело ответа, я получаю прогоны 748,2 мс, 647,9 мс, 738,2 мс

...