附加firebase云函数或从云函数调用缓存其数据

附加firebase云函数或从云函数调用缓存其数据,firebase,caching,firebase-realtime-database,google-cloud-functions,Firebase,Caching,Firebase Realtime Database,Google Cloud Functions,我有一个前端组件,它由一个图表和几个不同的过滤器组成,允许用户按数据类型进行过滤。但是,他们过滤的数据相对较大,因此我不想将所有数据都加载到网页中,而是使用firebase cloud函数来处理过滤。问题是,用户在使用该组件时通常会进行大量过滤,因此云功能重复下载必要的数据是没有意义的。是否有一种方法可以将云函数“附加”到调用中并使其更新,而无需重新检索数据,或者在不可能的情况下,以某种方式将检索到的firebase数据缓存到云函数可访问的某个位置 exports.handleChartData

我有一个前端组件,它由一个图表和几个不同的过滤器组成,允许用户按数据类型进行过滤。但是,他们过滤的数据相对较大,因此我不想将所有数据都加载到网页中,而是使用firebase cloud函数来处理过滤。问题是,用户在使用该组件时通常会进行大量过滤,因此云功能重复下载必要的数据是没有意义的。是否有一种方法可以将云函数“附加”到调用中并使其更新,而无需重新检索数据,或者在不可能的情况下,以某种方式将检索到的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?
}

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

  • 无法保证下次数据会在那里,因为实例会根据需要上下旋转。因此,您需要在每次调用时检查该文件是否存在,并准备在该文件不存在时创建它
  • /tmp
    磁盘空间是一个RAM磁盘,因此在那里写入的任何文件都将从您为云功能容器分配的内存中取出
  • 您无法可靠地在调用期间保持侦听器处于活动状态,因此无法更新缓存
另见:


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

  • 无法保证下次数据会在那里,因为实例会根据需要上下旋转。因此,您需要在每次调用时检查该文件是否存在,并准备在该文件不存在时创建它
  • /tmp
    磁盘空间是一个RAM磁盘,因此在那里写入的任何文件都将从您为云功能容器分配的内存中取出
  • 您无法可靠地在调用期间保持侦听器处于活动状态,因此无法更新缓存
另见:


我不明白你在这里想干什么。但我要说的是,云功能中没有有效的“缓存”。你最好使用客户端缓存。我不明白你想在这里做什么。但我要说的是,云功能中没有有效的“缓存”。你最好使用客户端缓存。弗兰克,谢谢你的回复。接下来有几个问题:1。根据您的要点1,相同的实例可能会持续一段时间,并服务于从前端发送的请求(如果它使用相同的/tmp空间)?2.难道不能使用etag参数检查缓存是否过时,然后重新检索数据(如果过时)?谢谢。对于实例的生命周期没有任何保证。2.没有足够的信息来回答这个问题。我想说你们试试看,若你们被卡住了,那个就和我一起开始一个新问题。谢谢你们的回答。接下来有几个问题:1。根据您的要点1,相同的实例可能会持续一段时间,并服务于从前端发送的请求(如果它使用相同的/tmp空间)?2.难道不能使用etag参数检查缓存是否过时,然后重新检索数据(如果过时)?谢谢。对于实例的生命周期没有任何保证。2.没有足够的信息来回答这个问题。我想说,你们试试看,若你们被卡住了,就和我一起开始一个新的问题。