如何使用 Http cache-control 保存 firestore 请求?

How to save firestore requests by using Http cache-control?

假设我有一个 web/mobile 应用 运行 firebase firestore 数据库。

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

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

如果用户加载页面 A,它将向 firestore 发出 1 个请求(例如)。如果这个用户去页面 B 5 分钟后返回页面 A,我不希望应用程序在内容没有改变的情况下再次发出请求。

我听说了 http cache-control headers 但我担心的是。如果cache control去查firestore看看内容是否还是一样,这个操作会不会被firestore算作一次请求?

Firestore 不会以 HTTP Cache-Control headers 适用的方式发出请求。

但是,protocol 包含一个恢复令牌的概念,它允许稍后恢复整个查询,可能避免重新传输与查询匹配的任何未更改文档。

如果您 enable persistence 在您的网络应用程序中,Firestore 会为您在本地 IndexedDB 中缓存文档和恢复令牌。如果您稍后返回页面,它将透明地使用恢复令牌并避免重传。

记一个pricing caveat:

If the listener is disconnected for more than 30 minutes (for example, if the user goes offline), you will be charged for reads as if you had issued a brand-new query.

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

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

然后 Firestore 将请求该页面的数据,但服务器基本上会回应说没有任何变化:不会传输任何文件,也不会收取确认费用。