javascript – Firebase是否缓存数据?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Firebase是否缓存数据?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1803字,纯文字阅读大概需要3分钟。
内容图文
我在某处读到了Firebase缓存数据的说法.
所以我运行了this test,读取了大量的数据(大约400KB).
这是相关的代码.
firebase.initializeApp(config);
var counter = 0;
console.time('firebase answered in');
firebase.database().ref('texts').once('value',onData);
function onData(snapshot){
console.timeEnd('firebase answered in');
counter ++;
if(counter > 20) return;
setTimeout(function(){
console.time('firebase answered in');
firebase.database().ref('texts').once('value',onData);
},2000);
}
正如您所看到的,第一次加载数据需要一段时间,后续调用花费的时间要少得多.
firebase answered in: 1279.422ms
firebase answered in: 236.378ms
firebase answered in: 228.595ms
firebase answered in: 202.700ms
firebase answered in: 208.371ms
firebase answered in: 214.807ms
etc
但是,如果数据在本地缓存?200ms(有时更多)似乎需要大量时间来访问本地数据.足以让用户在渲染UI时感知延迟.
Firebase缓存数据也是如此吗?那些?200ms的事情发生了什么?
解决方法:
只要存在该数据的活动侦听器,Firebase就会缓存数据(在内存中).
由于您的代码仅使用once()侦听器,因此在接收数据时(在调用回调之前)会立即分离侦听器,并从缓存中清除数据.这意味着必须从服务器获取每一次()的数据,这显然是你的情况下的200ms往返.第一个加载速度较慢,因为可能在该调用中建立了连接.
验证这一点的快速技巧是在开始循环之前添加永久监听器:
firebase.initializeApp(config);
var counter = 0;
console.time('firebase answered in');
firebase.database().ref('texts').on('value',function() {});
firebase.database().ref('texts').once('value',onData);
function onData(snapshot){
console.timeEnd('firebase answered in');
counter ++;
if(counter > 20) return;
setTimeout(function(){
console.time('firebase answered in');
firebase.database().ref('texts').once('value',onData);
},2000);
}
通过这种简单的更改,日志记录变为:
firebase answered in: 580.575ms
firebase answered in: 4.040ms
firebase answered in: 7.569ms
firebase answered in: 5.739ms
内容总结
以上是互联网集市为您收集整理的javascript – Firebase是否缓存数据?全部内容,希望文章能够帮你解决javascript – Firebase是否缓存数据?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。