目前,我使用亚马逊s3来存储所有的对象,如图像和视频。我使用IOS AWS SDK上传对象。
我的申请流程是
1.用户拍摄照片或录制视频
1.用户在表单上添加其他信息,例如Instagram的标题(使用Alamofire)
1.用户单击继续,然后AWS将开始使用IOS AWS SDK将图像和视频上传到S3
1.对象成功上传到S3后,S3将使用链接进行响应
1.最后使用Alamofire将包含S3链接的信息作为参数发送给POST API
我面临的问题是,它需要相当多的,做AWS上传+调用一个API。这确实是一个糟糕的用户体验。大多数的图像大约不到5 MB
我的解决方案
1.调整图像大小,但视频呢?
1.用户点击继续后,与其做AWS上传+调用API,不如在不同的屏幕上做后台,这样用户就不需要等待加载指示符了
什么方法是伟大的解决这个问题?.谢谢
6条答案
按热度按时间nkcskrwz1#
你的问题可以换一种说法:“我如何最小化上传延迟?”
如果您使用S3作为文件存储并从外部服务器上传,则由于网络延迟,您将面临上传速度的巨大影响。
您可能要考虑的另一个解决方案是使用S3后操作,而不是操作中。
这仅仅意味着您的服务器接受上传并将URL返回给用户,其中独立的后台进程与S3外部用户请求同步。
在这种情况下,您将有 * 用户->服务器->用户 *。
现在你有 * 用户->服务器-> S3 ->用户 *。
hujrc8aj2#
当速度和用户体验至关重要时,您可能希望使用AWS cloudfront等内容交付网络服务。
当低带宽和存储成本比访问速度更重要时,Amazon S3是理想的选择,而Cloudfront则完全取决于访问速度。
请参阅this链接,了解如何使用S3存储桶设置cloudfront。
wqnecbli3#
当您的用户分布在全球各地时,您应该启用并使用S3传输加速。这将减少离您的存储桶区域不近的用户的上传时间。
除此之外,上传5 MB将需要一些时间,具体取决于您的移动的连接。因此,您应该在客户端上调整图像的大小,并且可以考虑提前开始上传,例如,当用户输入详细信息时,上传已经在后台运行。
a5g8bdjr4#
我注意到在配置中包含“区域”可以在7秒内加快上传速度。
也许还有其他方法可以改进,我目前正在研究包括直接端点URL。或者可能就是这样:https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html
d7v8vwbk5#
对我来说,它没有在上传功能中提供内容类型选项。节省了60多秒
h7wcgrx36#
在我的例子中,使用双栈端点提高了所有s3命令的速度。