Firebase автономный кэш и оригинальная firebase.исходный код JS

мой вопрос является продолжением этой теме. Мне нравится простота и производительность Firebase из того, что я видел до сих пор.

Как я понимаю, firebase.js синхронизирует моментальные снимки данных с сервера в объект в памяти Javascript. Однако в настоящее время нет возможности кэшировать эти данные на диск.

Как результат:

  1. приложения должны иметь соединение при запуске, таким образом, нет истинного форума доступ.
  2. пропускная способность теряется каждый раз, когда приложение запускается путем повторной передачи всех предыдущих данных.

поскольку данные моментального снимка находятся в памяти как объект 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 выйдет в сеть, он будет синхронизирован.

однако это действительно подходит только для статических данных, которые только один человек будет получать доступ и изменять. Рассмотрим, например, последствия, если я загружаю данные, храню их локально в течение недели, и они изменяются несколькими другими пользователями за это время, затем я загружаю свое приложение в автономном режиме, делаю одно незначительное изменение, а затем прихожу в интернет. Мои несвежие перемены сметут все. работа сделана в промежутке.

есть много способов справиться с этим -- разрешение конфликтов, использование правил безопасности и счетчиков обновлений/временных меток для обнаружения устаревших данных и предотвращения регрессий-но это не простое дело и требует глубокого рассмотрения, прежде чем вы отправитесь по этому маршруту.