4

假设我有一个运行 firebase firestore 数据库的网络/移动应用程序。

我的应用程序设置为主要提供完全存储在 Firestore 中的动态内容。

所以我们在谈论缓存动态内容

如果用户加载页面 A,它将向 Firestore 发出 1 个请求(例如)。如果此用户转到页面 B,然后在 5 分钟后返回页面 A,如果内容没有更改,我不希望应用程序发出另一个请求。

我听说过http cache-control标题,但我担心的是。如果缓存控制去检查 firestore 以了解内容是否仍然相同,那么这个操作是否会被视为 firestore 的请求?

4

1 回答 1

8

Firestore 不会以应用 HTTP Cache-Control 标头的方式发出请求。

然而,该协议包括一个恢复令牌的概念,它允许在以后恢复整个查询,可能避免重新传输与查询匹配的任何未更改的文档。

如果您在 Web 应用程序中启用持久性,Firestore 将为您在本地 IndexedDB 中缓存文档和恢复令牌。如果您稍后返回某个页面,它将透明地使用恢复令牌并避免重传。

请注意定价警告

如果监听器断开连接超过 30 分钟(例如,如果用户下线),您将被收取读取费用,就像您发出了全新的查询一样。

所以,专门解决你的问题。如果:

  • 你启用了持久性,
  • 基础数据没有改变,
  • 用户加载页面 A,并且
  • 5 分钟后再次加载页面 A

然后 Firestore 将请求页面的数据,但服务器基本上会响应没有任何变化:不会传输任何文档,并且不会收取任何费用来确认。

于 2017-10-05T07:12:25.547 回答