Какова стоимость производительности onSnapshot в FireStore? - PullRequest
0 голосов
/ 02 мая 2018

Я разрабатываю приложение, которое содержит (много) документов, которые доступны (возможно, многим) группам.

Мне нужно понять, как изменения документа передаются с сервера на клиент для построения моей модели данных.

  1. Все ли изменения в базе данных передаются клиентам (с минимальными данными), и клиенты загружают то, что было зарегистрировано с помощью onSnapshot?
  2. Есть ли на удаленном сервере фильтр, который обновляется и только соответствующие данные передаются клиенту?

В модели (1) стоимость добавления множества onSnapshot (по одному на каждый документ) кажется низкой. В модели (2) она может быть высокой, но это нагрузка на сервер? Как все это относится к модели ценообразования в пожарном депо (количество считываний).

Спасибо за любые огни на этом ...

1 Ответ

0 голосов
/ 03 мая 2018

На самом деле ответ в код :

/**
 * A PersistentStream that implements the Listen RPC.
 *
 * Once the Listen stream has called the openHandler, any number of listen and
 * unlisten calls calls can be sent to control what changes will be sent from
 * the server for ListenResponses.
 */
export class PersistentListenStream extends PersistentStream< // ...

Когда мы создаем onSnapshot, запрос отправляется на сервер, который запоминает, что интересует клиента, и обновляет его фильтр уведомлений.

Это означает, что мы находимся в сценарии № 2 и объясняет стоимость открытых соединений для сервера.

Это также означает, что нам все равно, сколько onSnapshot мы создадим. Что касается клиента, не возникает проблем с производительностью при выполнении одного onSnapshot для каждого документа, который мы получаем (но для этого в Firestore Стоимость чтения ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...