代码之家  ›  专栏  ›  技术社区  ›  vir us

Web应用:FireStore缓存-仅读取更改的文档

  •  1
  • vir us  · 技术社区  · 5 年前

    当涉及到使用官方Web SDK的FireStore缓存时,它是否对读取进行了优化,以便仅当上次读取后文档发生更改时,它才会向服务器“发送”读取请求?(因此每次尝试都不会产生额外的文档读取)

    要详细说明一点,请考虑以下场景:

    1. 用户在Web应用程序上打开其个人资料页
    2. FireStore请求服务器获取配置文件文档(1个针对定价读取)
    3. 用户离开页面并在一段时间后返回到配置文件
    4. Web应用程序需要再次访问配置文件文档

    在步骤4上。默认情况下,FireStore是否会从服务器请求文档,即使文档没有更改?(这意味着每次用户导航到配置文件页面时,它将作为1个附加的读取与定价)

    如果是,是否可以配置FireStore,使其仅使用缓存对象,并且仅在服务器上的对象发生更改时更新该对象?如何做到这一点?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Doug Stevenson    5 年前

    默认情况下,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
    

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