Google Chrome помещал запрос в очередь один за другим, когда несколько запросов к приложению локального узла - PullRequest
0 голосов
/ 10 ноября 2018

Недавно я тестировал асинхронное поведение веб-приложения nodejs express. Мой код был очень прост

const express = require('express');
const app = express();

const port = 3000;

app.get('/', (req, res) => {
    console.log(`hello main start`);

    setTimeout(() => {
        const date = new Date();
        console.log(date);
        res.send(`hello work done at ${date}!`);
    }, 20000);

    console.log(`hello main end`);
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`);
})

Я обнаружил, что, если я просто одновременно открываю 2 вкладки до URL-адреса конечной точки http://localhost:3000/ в моем браузере Chrome без открытия инструментов разработчика, запрос запускается один за другим. Как я могу узнать, что они запускаются один за другим, так это то, что когда я наблюдаю журнал консоли сервера, второй журнал запускается только после того, как запрос 1 закончится. И, следовательно, мне нужно 40 секунд для выполнения моих 2 запросов.

Однако я не ожидаю, что вышеупомянутое поведение случится. Поэтому я стараюсь делать то же самое с почтальоном.

Но в этот раз я обнаружил, что мой почтальон будет запускать 2 запроса одновременно, и мой сервер также немедленно регистрирует 2 запроса.

Что еще более странно, так это то, что если я открою вкладку 2 с открытием инструмента разработчика Chrome, поведение будет таким же, как я видел с почтальоном.

Может у кого-нибудь есть объяснение этого поведения для хрома? это Google делает это специально на Chrome?

1 Ответ

0 голосов
/ 10 ноября 2018

Да, это поведение Chrome.Идентичные запросы к одному и тому же хосту останавливаются.Это очевидно, если вы посмотрите вкладку сети в инструментах разработчика.

Stalled

...