我有一个Firebase云功能,我call directly from my app。此云函数获取Firestore文档的集合,迭代每个文档,然后返回结果。
我的问题是,是否最好将fetch / get的结果保存在内存中(在节点服务器上),用.onSnapshot
刷新?这似乎可以提高性能,因为我的云功能不必等待Firestore响应(它已经在内存中有了集合)。我该怎么做?简单填充全局变量?如何用云功能做.onSnaphot
实时监听器?
它可能取决于这些快照的大小以及可以缓存的快照数量......
因为,它是一个RAM
磁盘,没有管家,它可能只在有限的时间内工作。
始终删除临时文件
临时目录中的本地磁盘存储是内存中的文件系统。您编写的文件占用了您的函数可用的内存,有时会在调用之间保持不变。未能明确删除这些文件可能最终导致内存不足错误和随后的冷启动。
资料来源:Cloud Functions - Tips & Tricks。
它没有告诉那里,硬限制到底是什么 - 而在其他地方缓存可能不会提高访问时间。每个函数的it says 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();
资料来源:Get realtime updates with Cloud Firestore。
Cloud Firestore Triggers可能是另一种选择。