首页 > 解决方案 > 为多个集合缓存 Firebase 数据 - 我怎么知道什么时候发生了变化?

问题描述

我正在使用 Firebase 允许用户保存有关其登录配置文件的某些信息。我总共有 4 个不同的集合,所有集合都包含 UID 匹配的文档。

当我的网站加载时,我需要立即访问给定用户 UID 的所有 4 个集合中的数据。这意味着现在,每当用户重新加载我的应用程序时,他们都会生成 4 个获取请求。然而,我的应用程序的用户往往不会经常更改他们存储的信息(可能每 20 次左右加载应用程序一次),因此实际上没有必要每次都重新请求这些数据。

我已经采取措施将所有这些数据缓存在用户的浏览器本地存储中,但这就是我的问题所在:我如何知道我缓存的数据何时过期?

在过去,我创建了类似的缓存机制,最终依赖于“版本”标志。数据源和用户的本地存储都包含一个“版本”。当两者匹配时,应用程序知道它拥有最新的数据,但是当它们不同步时,应用程序知道它需要重新请求数据。每次发生影响相关用户的更新时,数据源上的“版本”标志最终都会更改。

理想情况下,我想以这个流程结束:

  1. 用户加载应用程序。
  2. 应用程序将本地数据版本与 Firebase 中包含的版本进行比较。
    1. 如果版本匹配,请使用本地数据。
    2. 如果版本不匹配,请请求所有数据。

可以用 Firebase 做这样的事情吗?现在,每次修改用户数据以更改此版本标志时,如果不必生成额外的 set 调用,我就无法看到这一点。

如果这是不可能的,我怎么知道用户的数据何时需要更新而不用完多个请求?

如果有帮助,我正在使用 Firestore,这是一个没有后端的 Web 应用程序。

标签: javascriptfirebasecachinggoogle-cloud-firestore

解决方案


推荐阅读