Кэширует ли Google Firestore документы и коллекции или всегда запрашивает новые?

#firebase #google-cloud-firestore

#firebase #google-cloud-firestore

Вопрос:

У меня одностраничное веб-приложение, и я НЕ включил сохранение в автономном режиме.

Компонент в этом приложении подписался на документ с помощью onSnapshot функции и получает обновления.

Другой компонент в том же экземпляре приложения считывает тот же документ с помощью get функции. Будет ли firebase предоставлять тот же экземпляр документа, который уже загружен в подписку? Или он отправит новый запрос на сервер?

Третий компонент в том же экземпляре приложения подписывается на тот же документ. Вызовет ли это новые запросы к серверу?

Как насчет чтения и подписки на коллекции?

Как насчет подписки на коллекцию, которая уже подписана, но вторая подписка вызывается после сужения результатов с where помощью функции? Будет ли Firestore повторно использовать уже загруженную полную коллекцию и фильтр в моем экземпляре клиента? Или он будет делать запросы к серверу?

Комментарии:

1. Витек: Помогает ли вам информация LeadDreamer?

Ответ №1:

Как правило, Firestore поддерживает локальный кэш, в основном для задержки / ответа, а не для экономии средств. Тем не менее, если документ можно прочитать из кэша, он будет сохранен, сохраняя прочитанное. Однако я бы не стал пытаться «спроектировать» его; ограничения памяти и другие соображения означают, что вы на самом деле не знаете, что находится в кэше или нет, и не должны знать.

ЕСЛИ для вас важна эта производительность / стоимость, лучше объединить Firestore с чем-то вроде Redux (что я и делаю), чтобы поддерживать локальные «наборы» документов, чтобы уменьшить количество вызовов в оба конца, и слушателей, чтобы поддерживать текущий Redux.

Ответ №2:

ДА. Firebase хранит документы и коллекции в кэш-памяти. когда вы находитесь в автономном режиме, вы можете получить доступ к копии данных в кэше. также вы можете управлять копией документов и коллекций в кэше.

прочитайте эту официальную документацию для получения дополнительной информации

https://firebase.google.com/docs/firestore/manage-data/enable-offline

Комментарии:

1. В документе, на который ссылается ссылка, объясняется долговременное / постоянное кэширование. Это срабатывает в автономном режиме. Но что, когда я не в автономном режиме? Или когда автономное сохранение отключено? Кэширует ли Firestore подписанные документы в памяти? Или две подписки на один и тот же документ означают, что я запрашиваю (и плачу) за них дважды?

2. Как правило, Firestore поддерживает локальный кэш, в основном для задержки / ответа, а не для экономии средств. Тем не менее, если документ можно прочитать из кэша, он будет сохранен, сохраняя прочитанное. Однако я бы не стал пытаться «спроектировать» его; ограничения памяти и другие соображения означают, что вы на самом деле не знаете, что находится в кэше или нет, и не должны знать. ЕСЛИ для вас важна эта производительность / стоимость, лучше объединить Firestore с чем-то вроде Redux (что я и делаю), чтобы поддерживать локальные «наборы» документов, чтобы уменьшить количество вызовов в оба конца, и слушателей, чтобы поддерживать текущий Redux.