有关Firestore缓存并读取费用的问题

时间:2019-06-16 10:04:17

标签: 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) {});

我认为2000次读取需要收费,因为数据保持最新状态

3。

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

总共1100读取了charged。这是因为它是不同的查询。

我是否有误解或错误?

1 个答案:

答案 0 :(得分:1)

  

2000次读取已收费,并且那些文档被缓存。

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

  

另一个2000读取已收费,这是因为firestore需要检查每个文档是否最新。因此2000 + 2000读取已收费

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

  

我认为2000次读取需要收费,因为数据保持最新状态

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

  

总共1100读取了charged。因为它是不同的查询

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