gpt4 book ai didi

performance - Firebase - 缓存可以提高性能吗?

转载 作者:行者123 更新时间:2023-12-03 00:52:44 25 4
gpt4 key购买 nike

我正在使用 Firebase 构建一个 Web 应用程序,该应用程序采用相同的数据并以两种不同的方式呈现它 - 在列表中和作为 Google map 上的标记。

现在,在每个 View ( map 或列表)中,我都有代码从 firebase 查询数据、将其合并在一起并显示它。相反,我正在考虑这个计划:在启动时,查询数据,合并数据,并将其全部保存到我在 View 之间传递的数组中。

从某种意义上说,我正在将 firebase 数据“缓存”在数组中。从某种意义上来说,这并不理想 - 缓存的数据不像直接查询 Firebase 那样是最新的。另一方面,我只调用 Firebase 一次。

这对性能有意义吗?从 Firebase 读取数据所需的时间与从数组读取数据的时间是否相同?

最佳答案

一般来说,没有必要通过缓存数据来限制 Firebase 的使用。 Firebase 在客户端上维护自己的“事件”数据缓存。 “事件”被定义为“on”调用未完成的数据。因此,对于任何事件数据,任何额外的“on”或“once”调用都不需要网络流量,因为数据已经加载。

我不完全确定“查询 firebase”是什么意思。 Firebase 没有传统意义上的查询。它只是具有附加回调的方法。您是否使用“once()”函数定期从 Firebase 获取数据?如果是这样,这可能会非常低效。 Once 是一种方便的方法,通常只应用于极不频繁访问的数据或由于某种原因开发人员不想实时更新的数据。如果在 Once() 完成时没有未完成的事件“on”调用,Firebase 将刷新该数据的缓存,并且对 Once() 的任何后续调用都将需要与服务器进行往返。

如果您想要的是一种高效地同步访问最新版本数据的本地副本的方法,我推荐这种方法:

var savedSnapshot = null;
dataRef.on("value", function(snapshot) {
savedSnapshot = snapshot;
});

//and then when you need to read the data
var theData = savedSnapshot.val()

通过维护一个 on() 调用,Firebase 能够在情况发生变化时仅通过网络发送增量来保持数据最新,而不是在每次需要时重新加载所有数据。

关于performance - Firebase - 缓存可以提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11991426/

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