网络应用:Firestore缓存-仅读取更改的文档

时间:2019-02-11 11:45:01

标签: javascript firebase google-cloud-firestore

当使用官方Web SDK进行Firestore缓存时,它是否优化读取操作,以便仅在上次读取后文档发生更改时才向服务器“发送”读取请求? (因此,每次尝试都不会再产生1次文档读取)

要详细说明,请考虑以下情形:

  1. 用户在网络应用上打开其个人资料页面
  2. Firestore向服务器发出请求以获取配置文件(按价格读取1条)
  3. 用户导航离开页面,过一会儿返回到个人资料
  4. 网络应用需要再次访问个人资料文档

在第4步中,即使没有更改,Firestore也会默认从服务器请求文档吗? (这意味着,每当用户导航到个人资料页面时,它将作为价格的1个额外读数)

如果是,是否可以配置Firestore,使其仅使用缓存的对象,并且仅在服务器上的对象更改时更新它?该怎么做?

1 个答案:

答案 0 :(得分:1)

默认情况下,Firestore SDK disables local persistence of cached data for web clients(但默认情况下为Android和iOS启用)。如果要启用持久性,请遵循documentation

中的说明
firebase.firestore().enablePersistence()
  .catch(function(err) {
      if (err.code == 'failed-precondition') {
          // Multiple tabs open, persistence can only be enabled
          // in one tab at a a time.
          // ...
      } else if (err.code == 'unimplemented') {
          // The current browser does not support all of the
          // features required to enable persistence
          // ...
      }
  });
// Subsequent queries will use persistence, if it was enabled successfully

如果文档在本地缓存中是最新的,则不会向您收取文档读取费用。