Ответ 1
В общем случае кэширование данных для ограничения использования Firebase не требуется. Firebase поддерживает собственный кэш "активных" данных на клиенте. "Активный" определяется как данные, для которых вызов "on" неактивен. Поэтому для любых активных данных любые дополнительные вызовы "on" или "один раз" не потребуют сетевого трафика, поскольку данные уже загружены.
Я не совсем уверен, что вы подразумеваете под запросом firebase. У Firebase нет запросов в традиционном смысле. Он просто имеет методы для присоединения обратных вызовов. Используете ли вы функцию "once()" для периодического получения данных из Firebase? Если это так, это потенциально может быть очень неэффективным. Когда-то это метод удобства и обычно должен использоваться только для данных, к которым обращаются крайне редко или по какой-то причине разработчик не хочет обновляться в режиме реального времени. Если никакие активные вызовы "on" не выдаются, когда один раз() завершается, Firebase будет очищать кеш этих данных, а любые последующие вызовы once() потребуют обратного перехода к серверу.
Если вам нужен способ синхронного доступа к локальной копии последней версии данных эффективным способом, я рекомендую этот метод:
var savedSnapshot = null;
dataRef.on("value", function(snapshot) {
savedSnapshot = snapshot;
});
//and then when you need to read the data
var theData = savedSnapshot.val()
Поддерживая один единственный вызов on(), Firebase может поддерживать ваши данные в актуальном состоянии, только отправляя deltas по проводу, когда что-то меняется, а не перезагружает все данные каждый раз, когда вам это нужно.