我正在研究制作一个让用户能够上传照片的应用,然后其他用户就可以看到这些照片(以Instagram为例)。
我之前在其他应用中使用过Firebase存储来存储用户个人资料图片,但我无法让下载速度正常工作。总是有一个非常明显的延迟。
为了加快下载速度,我是否会最好地寻找像AlamoFire这样的其他产品?或者有没有办法加快firebase存储?
我将要做的事情的一般概述 - 我有一个收集视图,其中包含所有用户图像的缩略图(由于它们是缩略图,因此希望下载时间不长),然后当用户点击一个单元格时,它会转到图像全尺寸的新视图。我更担心图像被轻敲得足够快。
答案 0 :(得分:1)
我非常确信,sql数据库不适合存储大型BLOB数据。存储文件的更好和合理的位置是文件系统。我建议将照片文件存储在专用的应用程序用户目录中,并将链接存储在Firebase DB中。
网络框架的选择是个人喜好的问题,它不会影响下载速度。它们只是基础NSURLConnection的包装
答案 1 :(得分:1)
用于图像下载和缓存的两个非常成熟且广泛使用的Firebase替代方案是SDWebImage和PINCache。
但是,过度缓慢与您选择的图像存储SDK相关的可能性不大。更多细节如下......
客户端存储解决方案应该对整体图像下载速度产生微不足道的影响。我们正在谈论毫秒差异......如果您发现使用Firebase的客户端与AFNetworking或NSURLSession下载之间存在巨大的多秒差异,那么您可能会做错事。
你没有说明"慢"是(5秒?50秒?)或者问题是wifi还是手机。
移动设备上下载速度缓慢的主要原因是:
我首先建立下载图像的基线。您可以通过将笔记本电脑连接到快速wifi并执行:
来完成此操作$ time curl <image url here> 1>/dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 20166 100 20166 0 0 73851 0 --:--:-- --:--:-- --:--:-- 73868
curl > /dev/null 0.02s user 0.01s system 11% cpu 0.297 total
此图像可能需要0.297秒。然后在您的应用中,下载您的下载时间,看看它们是如何叠加的。对于设备基准测试,您可以尝试使用[NSData dataWithContentsOfURL:url];
直接下载。