我最近将37,000个数据字符串上传到Firebase(美国所有城市的名称)。要发现使用observe .childAdded方法将每个上载到基本表视图的过程花费的时间太长。
还有其他选择吗?如何更快地将数据发送到我的应用程序?数据不应该更改。...还有其他选择吗?
答案 0 :(得分:1)
无法更快地加载相同的数据。 Firebase不会人为地限制您的下载速度,因此读取37,000个字符串所需的时间就是读取37,000个字符串所需的时间。
要使您的应用程序对用户的响应速度更快,您将必须加载较少的数据。而且由于您的用户不太可能读取所有37,000个字符串,因此一个不错的选择是仅加载他们将看到的数据。
由于您正在描述自动完成方案,因此我首先来看一下使用查询仅检索与它们已经键入的子节点匹配的子节点。在Firebase中,应该是这样的:
ref.queryOrdered(byChild: "name")
.queryStarting(atValue: "stack")
.queryEnding(atValue: "stack\u{f8ff}")
此代码接受(在服务器上)ref
下的所有节点,并按名称对它们进行排序。然后,它找到第一个以stack
开头的节点,并返回所有子节点,直到找到不再以stack
开头的节点为止。
通过这种方法,过滤会在服务器上进行,客户端只需下载与查询匹配的数据即可。
答案 1 :(得分:0)
使用Algolia可以轻松解决。 Algolia可以搜索大量数据集,而无需花费很多时间。这样,您可以查询Algolia,而无需查看Firebase数据库。
在您的 Firebase函数中,侦听您保留城市名称的位置中的所有新节点,并在调用该函数时,将该字符串添加到您的Algolia索引中。
您可以在此处关注Algolia文档:Algolia Docs