gpt4 book ai didi

javascript - Firebase 离线缓存 & 原始 firebase.js 源代码

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:57 26 4
gpt4 key购买 nike

我的问题是 this topic 的后续问题.到目前为止,我喜欢 Firebase 的简单性和性能。

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

结果:

  1. 应用程序在启动时需要连接,因此没有真正的离线访问。
  2. 每次启动应用时都会重新传输之前的所有数据,从而浪费带宽。

由于快照数据作为 Javascript 对象位于内存中,将其序列化为 JSON 并将其保存到 localStorage 应该非常简单,因此下次启动应用程序时可以加载准确的应用程序状态,无论是否在线.但由于 firebase.js 代码被缩小且含糊不清,我不知道去哪里看。

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

所以我的问题是:

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

<强>2。在哪里可以下载 firebase.js 的原始非缩小开发源代码?

(顺便说一句,有两个功能可以帮助 Firebase 在竞争中脱颖而出:离线缓存和 map reduce。)

最佳答案

离线缓存和类似 map reduce 的功能都在开发中。 firebase.js source is available here用于开发和调试。

您可以使用 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。当/如果 Firebase 上线,它将被同步。

但是,这确实只适用于只有一个人可以访问和更改的静态数据。考虑一下,例如,如果我下载数据,将其在本地保存一周,并且在此期间被其他几个用户修改,然后我离线加载我的应用程序,进行一个小的更改,然后上线,那么后果是什么。我的陈旧更改会破坏其间完成的所有工作。

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

关于javascript - Firebase 离线缓存 & 原始 firebase.js 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19852669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com