【问题标题】:Attach firebase cloud function or cache its data from cloud function call附加 firebase 云函数或从云函数调用缓存其数据
【发布时间】:2019-06-01 04:06:58
【问题描述】:

我有一个前端组件,它由一个图表和几个不同的过滤器组成,允许用户按数据类型进行过滤。但是,他们过滤的数据比较大,所以我不想把所有的数据都加载到网页中,而是有一个 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?
}

【问题讨论】:

  • 我不明白你想在这里做什么。但我会说,Cloud Functions 中没有有效的“缓存”。你最好使用客户端缓存。

标签: firebase caching firebase-realtime-database google-cloud-functions


【解决方案1】:

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

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

另见:

【讨论】:

  • 坦率感谢您的回复。那么有几个问题: 1. 根据您的要点 1,同一个实例可能会持续一段时间,并服务从前端发送的请求(如果它使用相同的 /tmp 空间)? 2. 不能只用etag参数检查缓存是否过期,如果是则重新取回数据吗?谢谢。
  • 1.对实例的生命周期没有任何保证。 2. 没有足够的信息来回答这个问题。我会说你试一试,如果你遇到困难,请使用minimal code that reproduces that problem 提出一个新问题。
猜你喜欢
  • 2019-01-18
  • 1970-01-01
  • 2018-05-17
  • 2021-09-13
  • 2021-02-10
  • 1970-01-01
  • 2017-08-09
  • 2018-05-29
  • 2020-04-19
相关资源
最近更新 更多