Мне интересно, позволяет ли включение автономной поддержки в клиентах для базы данных Firebase Realtime экономить полосу пропускания? Интересно, загружает ли клиент Firebase при запуске базу данных из хранилища, а затем продолжает и синхронизирует только то, что было добавлено позже? Или он синхронизирует все, и, если это не работает, откатывает автономные данные, которые он хранил ранее.
Экономия полосы пропускания для базы данных Firebase Realtime за счет включения офлайн-поддержки
Ответы (2)
Если вы используете FirebaseDatabase.getInstance().setPersistenceEnabled(true);
, это означает, что вы сможете запрашивать свою базу данных, даже если вы не в сети. Это происходит потому, что Firebase создает локальную копию вашей базы данных. Каждое изменение, которое вносится, пока вы не в сети, будет обновляться на серверах Firebase после того, как вы снова подключитесь к сети. Таким образом, этот параметр не используется для экономии трафика, он предназначен для включения автономных возможностей.
Чтобы быть более ясным, каждый клиент, который использует базу данных Firebase и использует setPersistenceEnabled(true)
, поддерживает свою собственную внутреннюю (локальную) версию базы данных. Когда данные обновляются, они сначала записываются в эту локальную версию базы данных.
В результате все записи в Firebase немедленно запускают локальные события, прежде чем какие-либо данные будут записаны на сервер. Это означает, что приложение будет продолжать реагировать независимо от подключения к Интернету.
После восстановления подключения к Интернету вы получите соответствующее текущее состояние сервера. Клиент Firebase synchronizes
, передающий данные с серверов Firebase и других клиентов, использующих ту же базу данных.
Также следует помнить, что Firebase автоматически управляет connection state
, чтобы уменьшить полосу пропускания и использование батареи. Когда клиент не имеет active listeners
, ожидающих операций записи или onDisconnect
и не отключен явным образом методом goOffline
, Firebase закрывает соединение через 60 секунд бездействия.
В заключение отметим, что при включении офлайн-поддержки разницы в пропускной способности нет. Преимущество состоит в том, что мы можем запрашивать и изменять базу данных, даже если мы не подключены к Интернету.
Надеюсь, это поможет.
Сегодня я разговаривал с гуглером в Google Next Amsterdam, и он подтвердил мою теорию. Если в вашем приложении включена автономная поддержка, и вы переходите из автономного режима в онлайн-состояние, Firebase синхронизирует вашу базу данных самым разумным из возможных способов. Это означает, что, если это возможно, он отправит только измененные значения. Таким образом, включение поддержки в автономном режиме действительно экономит вашу пропускную способность.
Firebase will sync your database in the smartest way possible.
, правильно. Но, как я упоминал ранее, когда вы снова подключаетесь к сети, Firebase servers
обновляются только изменения, внесенные в то время, когда вы были офлайн. Но говорить о том, что давайте перейдем в автономный режим, чтобы сохранить ту же полосу пропускания, на мой взгляд, неверно: |
- person Alex Mamo; 21.06.2017