1 回答
TA贡献1780条经验 获得超5个赞
读取操作所需的时间取决于:
您连接到 Firebase 服务器的延迟
您正在读取的数据量
您的连接带宽
Firebase 处理请求所需的时间
在大多数情况下,Firebase 所花费的时间只是总时间的很小一部分,而您的大部分时间实际上都花在了数据传输上,这完全取决于带宽和数据量。如果这是您第一次在页面中从 Firebase 读取数据,则延迟也更重要,因为 Firebase 必须建立连接,这需要几次往返。
您当前的代码正在从数据库中下载所有数据,然后在 JavaScript 代码中搜索与某个值匹配的子节点。减少所需时间的最佳方法(除了升级到快速连接)是传输更少的数据,您可以使用 Firebase 的查询机制在服务器上进行过滤。
你可以非常接近:
var ref = firebase.database().ref();
var query = ref.orderByChild().startAt(firstName).endAt(firstName+"~");
query.once('value', function(snapshot) {
var data = snapshot.val();
callback(data);
这将显着减少传输的数据量。不过有几点注意事项:
该查询仅返回具有您要查找的名字的人。它还没有过滤姓氏,所以你仍然需要在客户端代码中过滤它。
为了进一步优化这一点,请将全名(您现在在客户端代码中编写)存储在数据库中,以便您可以对其进行查询并进一步减少数据传输。
Firebase 查询区分大小写,因此查询仅返回大小写完全匹配的数据。如果要查询不区分大小写,请考虑
toLowerCase()在数据库中存储一个值。请务必在 上定义索引
firstName,否则 Firebase 数据库仍会将所有数据发送到客户端,SDK 将在客户端执行过滤。
添加回答
举报
