Как предотвратить Firebase Firestore от ненужных операций чтения в приложении Flutter? - PullRequest
0 голосов
/ 09 июня 2019

Итак, в моей базе данных Firestore у меня есть около 2000 документов, которые содержат изображения (блоб) с некоторыми тегами, чтобы сгруппировать их, упорядочить и найти их на локальном устройстве. В моем приложении изображения хранятся в локальной базе данных SQLFlite, и пользователь может видеть их в автономном режиме, также включено автономное сохранение Firestore. Когда сетевое подключение устройства включено, слушатель firestore снова считывает все мои запросы, потому что мое приложение показывает мои изображения в соответствии с тегами, которые я использую для классификации изображений, даже если в моей базе данных Firestore нет изменений. Основная причина этого - правило 30 минут:

"Также, если слушатель отключен более чем на 30 минут (для Например, если пользователь переходит в автономный режим), вы будете платить за чтение как если вы задали новый запрос "

Таким образом, когда моя локальная база данных и база данных Firestore не меняются, я буду платить за все запросы, вызванные тегами моих изображений, каждые 30 минут в худшем случае, что может привести к максимуму 10000 чтений для пользователя с максимальной .

Когда мы говорим о максимуме, мы недооцениваем «минимальный» сценарий. Если пользователь открывает мое приложение 4 раза в день, это может привести к 1000 чтениям, что, по-моему, также дорого.

Я думаю о некоторых решениях: 1- любой способ отключить сетевое соединение приложений Flutter с некоторым кодом при открытии приложения? Например, если во время открытия приложения имеется сетевое подключение, в течение следующих 24 часов приложение не сможет подключиться к Интернету независимо от того, включено или выключено сетевое подключение телефона. 2- есть альтернативы?

Я знаю, что я как бы неправильно использую Firestore, но моя база данных, вероятно, будет меняться раз в день, так зачем читать каждый запрос снова и снова через каждые 30 минут? Как любитель-разработчик, любая идея ценится, большое спасибо.

РЕДАКТИРОВАТЬ: 3- как насчет использования базы данных в реальном времени + облачного хранилища вместо Firestore с изображениями, закодированными в BLOB-объектах? Я не знаю, есть ли в БД в реальном времени пассивные способы выставления счетов, как правило 30 минут в Cloud Firestore.

1 Ответ

0 голосов
/ 10 июня 2019

моя база данных, вероятно, будет меняться один раз в день, так зачем читать каждый запрос снова и снова каждые 30 минут?

Хороший вопрос.Так почему бы вам не сохранить отметку времени, когда вы в последний раз запрашивали данные, в состоянии вашего приложения, а затем, когда приложение перезапускает только те данные запроса, которые были созданы / изменены с тех пор?

...