Приложение чата - отправка нескольких одновременных запросов в MongoDB - PullRequest
0 голосов
/ 08 декабря 2018

Я создаю приложение чата и пытаюсь выработать наиболее эффективный способ запроса нескольких потоков разговоров (как личных, так и групповых) из базы данных MongoDB.

Моя текущая идея - циклически проходить по пользователюконтакты на стороне клиента и отправьте запрос getConversation в мой REST API для каждого контакта.Это происходит после , когда данные профиля пользователя сначала были получены на сервере и отправлены клиенту, чтобы как можно быстрее заполнить некоторые части интерфейса чата, хотя я не уверен, что это оптимальноучитывая количество дополнительных запросов, которые я делаю (легко 25 - 50 за один раз).

В настоящее время я думаю, что есть 3 метода, которые я мог бы использовать:

1.) Отправить запросна сервер для пользовательских данных> циклически проходить через каждый контакт (частный и групповой) на сервере> получать каждый разговор из БД> отправлять весь пакет обратно клиенту и разделять данные в соответствующие (Vue / Vuex) модули.Всего запросов: 1 / Запрошенных данных: Большой

2.) * Что я делаю сейчас: отправляю первоначальный запрос данных пользователя> принимаю его на клиенте> перебираю контакты на стороне клиента>отправить отдельный запрос API для каждого контакта> заполнить разговоры, когда они возвращаются на клиент.Всего запросов:> 20 / Запрошенных данных: Малый

3.) Отправьте первоначальный запрос данных пользователя> получите его> отправьте один запрос на все разговоры.Я ожидаю, что это займет больше времени, чем вариант 2, но я могу ошибаться.Всего запросов: 2 / Запрошенных данных: средний

Моя цель - как быстро, так и эффективно извлекать как пользовательские данные, так и разговоры, поэтому я приветствую любые предложения или методы, которые вы использовали для достижения такого рода целей.,

Приветствия:)

Примечания:

Я использую Vue / Vuex / MongoDB / Express / SocketIO.

1 Ответ

0 голосов
/ 18 января 2019

TL; DR Я бы остановился на втором варианте.

Поскольку вы хотите, чтобы ваше приложение загружалось как можно быстрее и отвечало быстро, вам следует избегать запроса больших порций данных.который вы можете даже не использовать в приложении.Я бы взял первые (последние) 5-10 разговоров, так как это, вероятно, те, которые пользователь хотел бы прочитать первыми.Затем, если пользователь хочет прочитать больше разговоров, которые вы еще не получили с сервера, вы можете получить их (и, возможно, некоторые разговоры примерно того времени).Ваша обеспокоенность по поводу отправки большого количества запросов на сервер не должна быть значительно медленнее, чем один большой запрос, и это сделает приложение намного быстрее и быстрей.

Для дальнейшего обсуждения этой темы ознакомьтесь с этот вопрос .

...