关于firestore缓存和读取费用的问题

flu*_*oid 8 firebase google-cloud-firestore

我了解 firestore 缓存和读取费用在这些场景中的表现。我不确定这是否正确。

如果我在一个集合中有 2000 个文档。此集合名称为“testCollection”。这些文档不会更改、更新或删除。我的客户端是 android 已经启用离线持久性和设备当前在线

1.

db.collection("testCollection").onSnapshot(function(doc) {});

收取 2000 次读取费用并缓存这些文档。然后重新打开应用程序并再次运行相同的代码

db.collection("testCollection").onSnapshot(function(doc) {});

另外 2000 次读取收费,因为 firestore 需要检查每个文档是否是最新的。所以 2000+2000 次读取收费

2.

我不确定这是如何表现的。只需一起运行相同的代码

db.collection("testCollection").onSnapshot(function(doc) {}); 
db.collection("testCollection").onSnapshot(function(doc) {});
Run Code Online (Sandbox Code Playgroud)

我认为 2000 次读取是收费的,因为数据是最新的

3.

db.collection("testCollection").limit(300).onSnapshot(function(doc) {}); 
db.collection("testCollection").limit(800).onSnapshot(function(doc) {}); 
Run Code Online (Sandbox Code Playgroud)

总共 1100 次读取收费。因为它是不同的查询。

我有什么误解或错误吗?

Ale*_*amo 9

收取 2000 次读取费用并缓存这些文档。

这是正确的,因为这是您第一次执行这些读取操作。

另外 2000 次读取收费,因为 Firestore 需要检查每个文档是否是最新的。所以 2000+2000 次读取收费

一旦文档在您的缓存中并且这些文档没有更改(如您所说),所有读取操作都来自缓存。您无需为来自缓存的读取操作付费。

我认为 2000 次读取是收费的,因为数据是最新的

仅当 Firebase 服务器上的数据发生更改时,您才需要执行其他读取操作,否则,您将从缓存中获取数据。

总共 1100 次读取收费。因为它是一个不同的查询

如果您已经执行了初始查询并且已经获得了那 2000 个文档,如果您执行另一个查询,无论您是否使用限制,您都会从缓存中读取所有这些文档。