Firebase автономный кэш и оригинальная firebase.исходный код JS
мой вопрос является продолжением этой теме. Мне нравится простота и производительность Firebase из того, что я видел до сих пор.
Как я понимаю, firebase.js синхронизирует моментальные снимки данных с сервера в объект в памяти Javascript. Однако в настоящее время нет возможности кэшировать эти данные на диск.
Как результат:
- приложения должны иметь соединение при запуске, таким образом, нет истинного форума доступ.
- пропускная способность теряется каждый раз, когда приложение запускается путем повторной передачи всех предыдущих данных.
поскольку данные моментального снимка находятся в памяти как объект Javascript, должно быть довольно тривиально сериализовать его как JSON и сохранить его в localStorage, поэтому точное состояние приложения может быть загружено при следующем запуске приложения, онлайн или нет. Но как огневая база.код js минимизирован и загадочен, я понятия не имею, где смотреть.
PouchDB обрабатывает это очень хорошо на бэкэнде CouchDB. (Но ему не хватает времени быстрого реагирования и простоты Firebase.)
Итак, мои вопросы:
1. Какие данные мне нужно сериализовать, чтобы сохранить снимок в localStorage? Как я могу загрузить это обратно в Firebase при запуске приложения?
2. Где я могу скачать оригинальный не сжатый исходный код для разработчиков огневая база.Яш?
(кстати, две функции, которые помогут Firebase взорвать конкуренцию из воды: автономное кэширование и уменьшение карты.)
1 ответов
автономное кэширование и функция map reduce-like находятся в разработке. Огневая база.js источник здесь для dev и отладки.
вы можете сериализовать снимок локально с помощью exportVal сохранить все приоритетные данные. Если вы не используете приоритеты, простое значение будет делать:
var fb = new Firebase(URL);
fb.once('value', function(snapshot) {
console.log('values with priorities', snapshot.exportVal());
console.log('values without priorities', snapshot.val());
});
позже, если Firebase отключена (используйте .info / connected чтобы помочь определить это) когда ваше приложение загружено, вы можете позвонить .set () чтобы вернуть эти данные в локальную базу. Когда / если Firebase выйдет в сеть, он будет синхронизирован.
однако это действительно подходит только для статических данных, которые только один человек будет получать доступ и изменять. Рассмотрим, например, последствия, если я загружаю данные, храню их локально в течение недели, и они изменяются несколькими другими пользователями за это время, затем я загружаю свое приложение в автономном режиме, делаю одно незначительное изменение, а затем прихожу в интернет. Мои несвежие перемены сметут все. работа сделана в промежутке.
есть много способов справиться с этим -- разрешение конфликтов, использование правил безопасности и счетчиков обновлений/временных меток для обнаружения устаревших данных и предотвращения регрессий-но это не простое дело и требует глубокого рассмотрения, прежде чем вы отправитесь по этому маршруту.