首页 > 解决方案 > 附加 firebase 云函数或从云函数调用缓存其数据

问题描述

我有一个前端组件,它由一个图表和几个不同的过滤器组成,允许用户按数据类型进行过滤。但是,他们过滤的数据比较大,所以我不想将它们全部加载到网页中,而是让 firebase 云功能来处理过滤。问题是用户在使用这个组件时通常会做一堆过滤,所以云功能重复下载必要的数据是没有意义的。有没有办法将云函数“附加”到调用并让它更新而不必重新检索数据,或者如果不可能的话,以某种方式将检索到的 firebase 数据缓存到云函数可访问的某个地方?

exports.handleChartData = functions.database.ref("chartData").onCall((data, context) => {
    // can I cache data here somehow
    // or can I have this function read in updates from user selected filters
    // without having to retrieve data again?
}

标签: firebasecachingfirebase-realtime-databasegoogle-cloud-functions

解决方案


您可以将数据写入本地/tmp磁盘。请注意:

  • 无法保证下次数据会在那里,因为实例会根据需要向上和向下旋转。因此,您需要在每次调用时检查文件是否存在,并准备好在它尚不存在时创建它。
  • 磁盘空间是 RAM 磁盘,因此写入其中的/tmp任何文件都将来自您为 Cloud Functions 容器分配的内存。
  • 您不能可靠地让侦听器在调用期间保持活动状态,因此您将无法更新缓存。

另见:


推荐阅读