首页 > 解决方案 > Web 应用:Firestore 缓存 - 仅读取更改的文档

问题描述

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

为了详细说明,请考虑以下场景:

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

在第 4 步中,Firestore 是否会默认从服务器请求文档,即使它没有更改?(这意味着每次用户导航到个人资料页面时,它都将计为对定价的 1 次额外阅读)

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

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


默认情况下,Firestore SDK为 Web 客户端禁用缓存数据的本地持久性(但默认情况下为 Android 和 iOS 启用)。如果要启用持久性,请按照文档中的说明进行操作

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

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


推荐阅读