如何通过使用Http缓存控制保存firestore请求?

问题描述:

比方说,我有一个运行Firebase Firestore数据库的Web /移动应用程序。如何通过使用Http缓存控制保存firestore请求?

我的应用程序设置为主要服务动态内容完全存储在firestore。

因此,我们所谈论的缓存动态内容

如果用户加载网页A,这将使得1个请求公司的FireStore(例如)。如果此用户转到Page B,然后在5分钟后回到Page A,我不希望应用程序在内容未更改的情况下发出另一个请求。

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

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

然而,protocol具有恢复凭证,以便让整个查询到在以后的时间恢复,有可能避免与查询匹配的任何文件不变的重传的概念。

如果您的enable persistence在您的Web应用程序中,Firestore会将文档和简历令牌缓存在本地的IndexedDB中。如果您稍后回到页面,它将透明地使用简历标记并避​​免重新传输。

注意一个pricing caveat

如果监听断开超过30分钟(例如,如果用户下线),您将被收取读取,如果你已经发布了一个全新的查询。

因此,要具体解决您的问题。如果:

  • 启用了持久性,
  • 底层数据没有改变,
  • 用户加载页面A,并
  • 加载网页A再次在5分钟后

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

+0

谢谢。这就是我想知道的。 –

+0

Gil我们是否需要为onSnapshot注册no-op侦听器来像使用Firebase RTDB一样缓存内存中的数据? https://*.com/questions/38423277/does-firebase-cache-the-data#answer-38423694 – cdock

+0

^只是为了确认我测试了添加一个持久侦听器,并且它将响应时间从〜300ms降到〜5ms。想知道'enablePersistence()'是否应该为我们处理...? – cdock