Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase离线缓存&;原始firebase.js源代码_Javascript_Firebase_Offline Caching - Fatal编程技术网

Javascript Firebase离线缓存&;原始firebase.js源代码

Javascript Firebase离线缓存&;原始firebase.js源代码,javascript,firebase,offline-caching,Javascript,Firebase,Offline Caching,我的问题是一个后续问题。从目前为止我所看到的情况来看,我喜欢Firebase的简单性和性能 据我所知,firebase.js将数据快照从服务器同步到Javascript内存中的一个对象中。但是,目前没有将此数据缓存到磁盘的功能 因此: 应用程序启动时需要有连接,因此没有真正的脱机访问 每次应用程序启动时都会通过重新传输以前的所有数据来浪费带宽 由于快照数据作为Javascript对象存储在内存中,因此将其序列化为JSON并保存到localStorage应该非常简单,这样下次启动应用程序时,无论是

我的问题是一个后续问题。从目前为止我所看到的情况来看,我喜欢Firebase的简单性和性能

据我所知,firebase.js将数据快照从服务器同步到Javascript内存中的一个对象中。但是,目前没有将此数据缓存到磁盘的功能

因此:

  • 应用程序启动时需要有连接,因此没有真正的脱机访问
  • 每次应用程序启动时都会通过重新传输以前的所有数据来浪费带宽
  • 由于快照数据作为Javascript对象存储在内存中,因此将其序列化为JSON并保存到localStorage应该非常简单,这样下次启动应用程序时,无论是否在线,都可以加载确切的应用程序状态。但是,由于firebase.js代码是小型化和神秘的,我不知道该去哪里查找

    在CouchDB后端可以很好地处理这个问题。(但它缺乏Firebase的快速响应时间和简单性。)

    所以我的问题是:

    1。我需要序列化哪些数据才能将快照保存到本地存储?当应用程序启动时,如何将其加载回Firebase?

    2。在哪里可以下载firebase.js的原始非小型开发人员源代码?


    (顺便说一句,有两个功能将帮助Firebase将竞争对手扫地出门:离线缓存和map reduce。)

    离线缓存和类似map reduce的功能都在开发中。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处于脱机状态(用于帮助确定此状态),则可以调用将该数据放回本地Firebase。当/如果Firebase联机,它将被同步

    然而,这确实只适用于只有一个人将访问和更改的静态数据。考虑一下,例如,如果我下载数据,把它保存在一个星期内,在那个时候它被其他几个用户修改,然后我把我的应用程序离线,做一个小的修改,然后上网。我的陈腐变化会把其间所做的所有工作都吹走


    有很多方法可以解决这个问题——冲突解决、使用安全规则和更新计数器/时间戳来检测过时数据并防止回归——但这并不是一件简单的事情,在你开始这条路线之前需要深入考虑。

    请分别作为不同的问题;如果你的问题包含多个答案,那么很难评估“正确”或“有用”的答案。在“脱机缓存”标题下也很难找到“开源firebase.js”的答案:)好的一面是,iOS和Java/web很快就会实现磁盘持久化。嘿,加藤,有关于磁盘持久化的消息吗?正在进行中。Firebase邮件列表上有几个关于持久性的线程。