, если пользователь, который открывает приложение с включенной функцией inte rnet, будет выполнять операции чтения из базы данных, даже если в базе данных нет изменений?
Если вы используете get()
, Firestore SDK всегда будет пытаться получить данные с сервера, независимо от того, изменены данные или нет. Вы сможете использовать данные из кэша, только , если устройство отключится. Однако, если вы пытаетесь прослушивать изменения в режиме реального времени, используя SnapShotListener
, в соответствии с официальной документацией:
Исходное состояние может поступать непосредственно с сервера или из локального кэша. Если в локальном кэше доступно состояние, снимок запроса будет первоначально заполнен кэшированными данными, а затем обновлен данными сервера, когда клиент обнаружит состояние сервера.
In Другими словами, если сервер сообщает, что у вас нет новых добавленных / обновленных / удаленных документов, вы получите данные из кэша. Однако есть кое-что еще, что вы должны позаботиться о продолжительности времени, в течение которого вы можете получать данные из кэша :
Кроме того, если прослушиватель отключен более чем на 30 минут (например, если пользователь переходит в автономный режим), с вас будет взиматься плата за чтение, как если бы вы выполнили новый запрос.
Другой возможный платеж может также исходить от :
Существует минимальная плата за чтение одного документа для каждого выполняемого запроса, даже если запрос не возвращает результатов.
Но все эти платежи являются нормальными согласно как устроен Firestore.