我有一个我直接从我的应用程序打电话的Firebase函数。这个云函数获取一个Fi还原文档的集合,对每个文档进行迭代,然后返回一个结果。
我的问题是,是否最好将获取/获取的结果保存在内存中(在节点服务器上),并使用.onSnapshot刷新?这似乎会提高性能,因为我的云功能不需要等待Firestore (它已经将集合保存在内存中)。我该怎么做?就像填充全局变量一样简单?如何使用云函数进行.onSnaphot实时侦听器?
发布于 2018-09-13 17:30:22
这可能取决于这些快照有多大,其中有多少是缓存的.
因为,它是一个RAM磁盘,没有家务,它可能只能在有限的时间内工作。
总是删除临时文件 临时目录中的本地磁盘存储是内存中的文件系统.写入的文件消耗函数可用的内存,有时在调用之间持续存在。如果不显式删除这些文件,最终可能会导致内存不足和随后的冷启动。
资料来源:云功能-技巧与技巧.
它并没有告诉我们,硬限制到底是什么--而其他地方的缓存可能不会对访问时间有那么大的改善。默认情况下,每个函数都可以使用上面写着 2048mb,而可以使用IAM & admin来提高配额。这完全取决于每个函数的配额是否能够被提高到足以处理缓存的程度。
下面是.onShapshot()事件的一个示例:
// for a single document:
var doc = db.collection('cities').doc('SF');
// this also works for multiple documents:
// var docs = db.collection('cities').where('state', '==', 'CA');
var observer = doc.onSnapshot(docSnapshot => {
console.log(`Received doc snapshot: ${docSnapshot}`);
}, err => {
console.log(`Encountered error: ${err}`);
});
// unsubscribe, to stop listening for changes:
var unsub = db.collection('cities').onSnapshot(() => {});
unsub();资料来源:使用实时更新.
云修复触发器可能是另一种选择。
https://stackoverflow.com/questions/52317536
复制相似问题