【发布时间】:2018-12-12 23:07:30
【问题描述】:
我正在使用 firebase 真实数据库准备 iOS 原生应用程序。
我有大约 10 万条数据。我需要显示最近的 50 个帖子,并在加载更多接下来的 50 个帖子后,所以我实现了 50 条记录的 分页 仍然需要很长时间(大约 20-30 秒)。
我还尝试了 indexing 与 firebase 中的规则。
仅供参考:它适用于 1000 条记录。
如何提高性能?
let post_messagesReference = self.databaseRef.child(FirebaseTablePostMessages)
var query = post_messagesReference.queryOrdered(byChild: kCreated)
var lastKey = String()
var createdVal = Int()
if let last = self.endKeyCommunity.first {
lastKey = last.id
createdVal = Int(last.created)
}
//get first 50 records
if self.endKeyCommunity.count == 0{
query = query.queryLimited(toLast:50)
self.showLoaderView()
} else { //get next 50 records
query = query.queryEnding(atValue: createdVal).queryLimited(toLast: 50)
}
query.observeSingleEvent(of: .value, with: { (snapshot) in
guard let children = snapshot.children.allObjects.first as? DataSnapshot else { return }
if snapshot.childrenCount > 0 {
for child in snapshot.children.allObjects as! [DataSnapshot]{
guard case let communityChatDictionary as NSDictionary = child.value else { return }
if lastKey != child.key{
}
guard case let communityChatDictionary as NSDictionary = children.value else { return }
}
}) { (error) in
}
【问题讨论】:
-
请避免使用“lac”等印度词。
-
前50个节点的加载需要多长时间?随后的 50 个音符需要多长时间?每个节点有多大?您正在测试的带宽是多少?
-
每个节点有多大? : 12 keys 你测试的带宽是多少?:5 MBPS 前 50 个节点的加载需要多长时间?:前 50 个节点加载 2-3 秒,但接下来的 50 个节点大约需要 15-20 秒。
标签: ios swift performance firebase firebase-realtime-database