- Если пользователь нажимает один и тот же запрос, снова и снова он все равно попадает на сервер. Я проверил это с помощью do c .metadata.isFromCache, и он всегда возвращает false.
Если вы онлайн , он всегда вернет false
и это ожидаемое поведение, поскольку слушатель всегда ищет изменения на сервере. Если вы хотите принудительно извлекать данные из кэша, пока вы онлайн , вам следует явно указать это в Firestore, добавив Source.CACHE
к вашему вызову get()
. Если вы не в сети , он всегда вернет true
.
Поможет ли использование снимков запросов уменьшить количество операций чтения для этого поискового запроса? Я думаю, нет. Поскольку пользователь изменяет запрос снова и снова.
Нет, не будет. Что представляет собой снимок запроса? Это в основном объект, который содержит результаты вашего запроса. Однако, если вы выполняете запрос «снова и снова», если это тот же запрос и ничего не изменилось на сервере, то с не будет взиматься плата за любые операции чтения. Это происходит потому, что при втором выполнении запроса результаты поступают из кэша. Если вы выполняете каждый раз новый поиск, вам всегда выставляется счет за количество операций чтения, равных количеству элементов, возвращаемых вашим запросом. Кроме того, если вы создаете новые поисковые запросы и возвращаемые элементы уже находятся в вашем кэше, то вам будет выставлена счет за операцию чтения только для новых.
Есть ли другой способ ограничить число операций чтения?
Самый простой способ ограничить результаты запроса - использовать вызов limit()
и передать в качестве аргумента число элементов, которые вы хотите, чтобы ваш запрос возвратил:
limit(10)