#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.