Firebase 管理Node.js SDK 缓存方法



我正在使用RESTful API构建一个服务(假设它是一个简单的公告平台(,我使用Firebase(Cloud Firestore(作为我的数据库。

我只使用 Firebase 管理员 SDK,这意味着每次读取/写入都是通过我的 Node.js 服务器进行的。由于 Firebase 管理员 SDK 没有离线缓存/持久性,因此每次我的"读取请求"都很重要。

示例代码:

app.get('/message/:cid', async (ctx) => {
const msg = await admin.firestore().collection('messages').doc(ctx.params.cid).get();
await ctx.render('message', { ...msg.data() });
});

我在想我是否可以做一些 LRU 缓存来保存我最近的公告消息,以便它不仅可以节省 Firebase 的使用量,还可以节省一些时间。这是一个好方法吗?用于性能和使用。提前谢谢。

添加 LRU 缓存以提高性能(在这种情况下还可以降低成本(听起来是一种合理的方法。

当然也要花一些时间考虑缓存失效。如果/messages中发生了某些变化,您将如何知道,以及如何防止从缓存中提供过时的内容?

一种典型的方法可能是使用更持久的侦听器,这些侦听器与 Firestore 保持打开的连接。例如,在向缓存中添加内容时开始侦听实时更新,并在从该案例中删除项目时删除侦听器。如果侦听器触发更新,您可以更新缓存中的项目。这仍然允许您减少读取,但同时确保您永远不会提供过时的内容。

最新更新