我有一个服务列表,每个服务都有一些结构如下的字段
Service1 *
ServiceID* NetID* Country* price* xxx* xxx* 10 fields in total*
Service2 *
ServiceID* NetID* Country* price* xxx* xxx* 10 fields in total*
我目前已安排每个服务作为其自己的文档的位置,总计1,180个。但是,当用户访问我的站点并希望选择一项服务时,服务器将提取全部1180个文件。只有100个用户,firebase会读取10万个文档。我当时想将所有服务的副本保存为csv,并在每次用户想要搜索服务时从那里加载。
是否有更好的数据结构或使用其他方法来减少我对Firestore的读取次数。
答案 0 :(得分:2)
是否有更好的数据结构
没有其他更好的方法可以做到这一点。
但是,当用户访问我的网站并希望选择一项服务时,服务器将提取全部1180。
这不是与Cloud Firestore进行交互的正确方法。您正在以高昂的代价下载大量的数据。除此之外,用户永远不会一次需要所有这些数据量。一个解决方案是将数据加载到较小的块中。对于Android,建议您从以下文章中查看答案:
我当时想将所有服务的副本保存为csv,并在每次用户想要搜索服务时从那里加载它。
没有必要。 Firestore已经拥有自己的缓存机制。因此,一旦获得文档,就始终会从缓存中读取该文档,只要在服务器上,就不会进行任何新更改。这里有更多信息:
对于Web,默认情况下禁用离线持久性。要启用持久性,请调用enablePersistence方法。会话之间不会自动清除Cloud Firestore的缓存。因此,如果您的Web应用程序处理了敏感信息,请确保在启用持久性之前先询问用户是否在受信任的设备上。