Посылаю запросы с ноды, в количестве 5 штук. Разница ответов плавает от 50 до 200 мс, причем ответ приходит раньше далеко не на первый посланный запрос. Почему так происходит? Запросы все абсолютно одинаковые, POST.
Так же в дополнение хочу спросить:
Отправлял запросы с разным api ключом + кодом (этого требует сайт) и почему-то с двух разных аккаунтов сайт отвечал на один из них быстрее (с чем это может быть связано?)
Все дело в том, что запрос на пути от клиента к серверу проходит через кучу разного сетевого оборудования, начиная от роутеров/маршрутизаторов, межсетевых экранов и прочего и кончая различными прокси с nginx или чем то подобным, распределяющим клиентскую нагрузку между серверами и сервисами (это упрощенно). На каждом из этих устройств есть собственные системы/механизмы распределения трафика, а также различные оптимизации, нацеленные на общее ускорение прохождения информации. Каждый из них может влиять на скорость прохождения запроса в зависимости от множества факторов, таких как общая нагрузка на канал, загруженность памяти устройств и их процессоров и многих других. В результате каждое из этих устройств может вносить некоторую задержку в прохождении каждого конкретного сетевого пакета, при этом для разных пакетов задержка может быть разной. Данное описание является очень упрощенным, но дает общее понимание ситуации. Таким образом, ситуация, когда ответы на запросы могут приходить не в том порядке, в каком эти запросы были сделаны является нормальной.
Если же вам требуется обеспечить строгую последовательность обработки ответов на запросы используйте Promise или другие механизмы, позволяющие управлять последовательностью асинхронных операций, такие как async await.
Nikolay37, тут конкретики не подскажу.
Мультизапрос, в ряде редких случаев может так же и замедлить прохождение запроса/ответа.
Если вы не имеете возможности повлиять на сервер, отвечающий на запросы и канал прохождения то в ряде случаев возможно ускорить отклик за счет кэширования полученных данных.
Роман, каким образом? Данные постоянно разные, дается json типа: name: aaa/id:bbb/color:qqq
Они постоянно разные, я так понимаю кэшировать я их не смогу?
Nikolay37, тоже не подскажу. Лучше расскажите причину по которой вы хотите все ускорить, ведь "от 50 до 200 мс" это достаточно быстро если речь идет о получении ответов от стороннего сервера. Возможно вам и ускорять ничего не надо, просто правильно организовать отправку запросов.
Роман, все связано с тем, что мне нужно намного быстрее отправить запрос на сервер (в сравнении с другими людьми). Я так понимаю любые десятки/сотни мс решают всю ситуацию
Nikolay37, ведь по факту можно кинуть необходимое для текущего момента количество запросов сразу (параллельно) и через Promise.all() дождаться всех ответов и продолжить выполнение задачи. При таком подходе общее время ожидания будет не намного больше чем время ответа самого медленного запроса
мне нужно намного быстрее отправить запрос на сервер (в сравнении с другими людьми)
Nikolay37, в таком случае, можно немного схитрить. Для этого вам понадобиться хост, находящийся в сетевом пространстве как можно ближе к серверу на который вы шлете запросы. Для этого можно попробовать определить на каком хостинге хостятся хозяева этого сервера и приобрести свой хост на этом же хостинге. Такой подход в большинстве случаев может существенно сократить время отклика.
Так же, для ускорения времени обработки ответов, вместо ноды можно использовать компилируемые языки, такие как голанг
Роман, еще раз повторюсь, мне достаточно только отправить запрос, но отправляю запрос не только я и в итоге мне нужно отправить его первым (или не первым, главное чтобы сервер ответил мне первее)
В общем еще раз большое спасибо. Буду пробовать, начну так же с 5-ти запросов, а дальше как пойдет
Роман, вот насчет этого спасибо. По поводу хостинга я не могу понять каким образом его выбрать (возможно у сервера свои центры), но плюс минус ближайший VDS уже выбран. Неужели go lang будет быстрее парсить json? Ведь в моей задаче я приходящие JSON Данные обрабатываю ищу мне нужные данные и посылаю запрос