【发布时间】:2019-10-18 02:28:29
【问题描述】:
我有一个iOS 应用程序,它使用Firebase Storage 来存储图像。上传图片后,我将其storage reference 保存在我的Firebase Database 中。当应用程序加载时,它会从数据库中获取各种storage references 并使用FirebaseUI 方法来显示它们对应的图像,如下所示:
let storageRef = Storage.storage().reference(forURL: imageUrl)
imageView.sd_setImage(with: storageRef, placeholderImage: nil)
这很好用……但速度很慢。
在寻找加速Firebase Storage 的解决方案时,我发现这篇文章暗示使用图像的公共链接,即。它的download url,而不是它的storage reference:https://stackoverflow.com/a/44362350/5225013
我的理解是,这与 public urls 前面有 CDN 有关,而 storage references 没有。
download url 可以在应用程序中使用以下代码检索:
let storageRef = Storage.storage().reference(forURL: imageUrl)
storageRef.downloadURL { (downloadUrl, error) in
if let downloadUrl = downloadUrl {
// do something with downloadUrl
}
}
不过,以这种方式获取它对我的目的来说毫无用处,因为在显示图像之前进行异步调用需要额外的时间......
我一直在考虑编写一个云函数来将每个图像的download url 与其对应的storage reference 一起保存在数据库中,然后使用它在应用程序中显示图像。这些图片不是个人的,也不包含敏感内容,所以我不介意它们是否是公开的。我主要想知道;如果我这样做,有什么我应该担心的吗?这种做法不常见是有原因的吗?
【问题讨论】:
标签: firebase firebase-realtime-database google-cloud-storage firebase-storage firebaseui