flutter firebase с streambuilder: будет ли плата за сервер расти экспоненциально?

Я новичок в приложении flutter-fire [: И здесь у меня есть простая проблема, но ее нелегко решить.

Когда мы используем Streambuilder в приложении, мы обычно видим отличную синхронизацию между пользовательским интерфейсом и БД вовремя. Я действительно чувствую себя счастливым, когда использую Streambuilder. Казалось, со Streambuilder будут происходить только прекрасные вещи.

Между тем возник подозрительный вопрос. Когда мы вводим print («привет, мир!»); в Streambuilder мы видим, что консоль RUN выводит фразу каждые миллисекунды, в противном случае она была бы напечатана только один раз. Это означает, что использование ОЗУ сильно увеличилось. Когда дело доходит до синхронизации БД, мы можем легко догадаться, что использование Streambuilder приводит к огромному использованию платы за связь клиент-сервер, которая в моем случае является платой за Firebase.

Вот мой вопрос. Могу ли я свободно использовать Streambuilder, когда поток подключен к БД (в моем случае это firebase)? Меня беспокоит плата за связь между пользовательским интерфейсом и firebase, потому что streambuilder, похоже, буквально использует огромное количество энергии каждые миллисекунды (IMO дополнительно, плата за сервер) в отличие от обычных разработчиков. Особенно, когда длина коллекции настолько велика, что однократное чтение коллекции может стоить много энергии, плата будет расти намного больше и больше, потому что streambuilder должен проверять тысячи документов firebase только для того, чтобы вычислить одну строку состояние.

Я предполагаю, что многие методы флаттера, связанные с сервером, используют Streambuilder, чтобы кто-то мог ясно понять, сколько мы будем платить за Google, когда будем использовать Streambuilder. Я знаю, что это довольно неоднозначный вопрос, но надеюсь, вы понимаете. [:


person tsitixe    schedule 28.11.2020    source источник


Ответы (1)


Контент, поступающий из базы данных Firebase, будь то FutureBuilder или StreamBuilder, платит только за значение запроса, которое было обработано один раз, а после этого, если одно и то же значение ответа совпадает для того же запроса, он не оплачивает эту стоимость и снова отображает сохраненный список, хранящийся в кэше, на экране клиента. .

И убедитесь, что он не вызывается чем-то вроде setState. в таком случае StreamBuilder вызывается снова.

person roun paleum    schedule 28.11.2020