mes*_*eeb 4 firebase google-cloud-firestore
// once
firebase.firestore().doc('path/to/doc').get()
// twice
firebase.firestore().doc('path/to/doc').get()
Run Code Online (Sandbox Code Playgroud)
用户打开一个带有来自客户的“任务”的网络应用程序。
每个任务都有一个client带有文档参考的字段。
因此,如果只有 20 个客户端,那么当用户打开应用程序时,我宁愿只有 520 次读取而不是 1000 次读取。
重新设计我的数据结构以将相关的客户端信息保存在任务本身而不是参考上是否更好,或者 Firebase JS SDK 是否足够智能,不会重复检索它刚刚检索的同一个文档。
PS:我在这里发现了一个类似的问题:
Firestore 是否对每个检索到的文档收取 Cloud Function Get 读取费用?
但它只是没有我正在寻找的确切信息。
firebase 从 firestore js sdk 缓存中检索文档是否收费?
不,它没有。如果从本地缓存完成读取,则不会作为服务器端读取收费。
但是您的代码有两个get调用:
Run Code Online (Sandbox Code Playgroud)// once firebase.firestore().doc('path/to/doc').get() // twice firebase.firestore().doc('path/to/doc').get()
在这种情况下,Firestore 客户端无法知道在这两次调用之间文档是否发生了更改。因此,它必须调用服务器来确定文档是否已更改,这是(或至少可能是)收费读取。
如果您需要了解应用程序中多个位置彼此靠近执行的文档的当前状态(时间方面),您应该onSnapshot在该文档上保留一个侦听器。这确保本地缓存始终以最低成本保持最新状态。
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |