Вопрос

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

Насколько я понимаю, Firebase.js синхронизирует снимки данных с сервера в объект в памяти JavaScript. Однако в настоящее время нет функциональности, чтобы кэшировать эти данные на диск.

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

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

Поскольку данные снимка находятся в памяти в качестве объекта JavaScript, это должно быть довольно тривиальным, чтобы сериализовать его как JSON и сохранять его в LocalStorage, поэтому точное состояние приложения может быть загружено в следующий раз, когда приложение будет запущено, онлайн или нет. Но так как код Firebase.js является министерством и загадочным, я понятия не имею, где искать.

Pouchdb Очень хорошо обрабатывает это на бэкэнд CouchDB. (Но ему не хватает времени быстрого отклика и простоты пожарной базы.)

Итак, мои вопросы:

1. Какие данные мне понадобятся сериализовать, чтобы сохранить снимок в LocalStorage? Как я могу затем загрузить это обратно в Firebase, когда начинается приложение?

2. Где я могу загрузить оригинальный не смягченный исходный код Dev для firebase.js?

(Кстати, две особенности, которые помогут Firebase выпустить конкуренцию из воды: кэширование и карта в автономном режиме.)

Это было полезно?

Решение

Офлайн-кэширование и функциональность снижения карты находятся в разработке. Firebase.js Источник доступен здесь для разработки и отладки.

Вы можете сериализовать снимок локально, используя экспортв Чтобы сохранить все приоритетные данные. Если вы не используете приоритеты, будет сделано простое значение:

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/подключен Чтобы помочь определить это) Когда ваше приложение загружено, вы можете позвонить .установлен() Чтобы вернуть эти данные обратно в локальную пожарную базу. Когда/если Firebase появится в Интернете, она будет синхронизирована.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top