我有一个应用程序每天读取5万至6万个文档,而我现在负担不起其他计划,所以我正在寻找一种优化读取的方法,以尽可能减少读取。
该数据库有4个集合以及一些子集合,我认为整个服务器中可能有大约1000个文档。
仍然存在:我可以从Firestore云中读取文档(用户首次打开应用程序)并将其存储在Firestore缓存中,然后,使该应用程序仅从Firestore缓存中加载数据,如果有新的文档,它仅读取这些文档,存储到缓存中,并继续从缓存中读取内容?
如果可能的话,该应用只能从缓存中加载数据(使用参数“ source”),而永远不能直接从Firestore中加载数据。
Firestore.instance.collection("images").getDocuments(source: Source.cache);
答案 0 :(得分:1)
仍然存在:我可以从Cloud Firestore中读取文档(用户首次打开应用程序时)并将其存储在Firestore缓存中
这是默认行为。根据有关Firestore offline persistence的官方文档:
对于Android和iOS,默认情况下启用离线持久性。要禁用持久性,请将PersistenceEnabled选项设置为false。
对于Web,默认情况下禁用脱机持久性。要启用持久性,请调用enablePersistence方法。会话之间不会自动清除Cloud Firestore的缓存。因此,如果您的Web应用程序处理了敏感信息,请确保在启用持久性之前先询问用户是否在受信任的设备上。
因此,您无需执行任何特殊操作。在其中一个集合上打开流后,数据将添加到缓存中。
之后,让该应用仅从Firestore缓存中加载数据,如果有新文档,它仅读取这些文档,存储到缓存中,并继续从缓存中读取内容?
这仍然是默认行为,但是只要不更改数据库中的文档,此方法就起作用。如果数据库中的文档发生了更改,您将需要为每个文档读取一个文档。机制是相同的。更改后的文档将被写入缓存,以后所有的读取都将从那里进行,而无需任何其他费用。
此外,您可以告诉Firestore仅在需要时从缓存中读取数据,如以下帖子中的答案所述: