【发布时间】:2021-10-17 02:13:47
【问题描述】:
目前,我正在使用 amazon s3 存储所有对象,例如图像和视频。我正在使用 IOS AWS SDK 上传对象。
我的申请流程是
- 用户拍照或录制视频
- 用户在表单上添加附加信息,类似于 Instagram 的标题(使用 Alamofire)
- 用户点击继续,然后AWS将开始上传图片 和使用 IOS AWS 开发工具包将视频传输到 S3
- 对象成功上传到 S3 后,S3 会响应 有链接
- 最终使用 Alamofire 发送信息,包括来自 S3 作为 POST API 的参数
我面临的问题是,执行 AWS 上传 + 调用 API 需要相当长的时间。这确实是一种糟糕的用户体验。大多数图像大约小于 5 MB
我的解决方案
调整图像大小,但视频呢?
用户点击继续后,不再进行 AWS 上传 + 调用 API,为什么不把它作为不同屏幕上的背景,这样 用户无需等待加载指示器
什么方法可以很好地解决这个问题?谢谢
【问题讨论】:
-
只是一个想法:当用户登陆他写附加信息的页面时,为什么不在后台开始上传?如果他取消或从不发布,您可以在未完成的情况下取消上传,或者发送命令将其从 AWS 数据库中删除。
-
检查 AWS Cognito 和 S3 存储桶是否在同一个区域。如果它们位于不同的区域,则上传内容需要很长时间。
-
尝试在收到链接后将其打印到控制台。我敢打赌,上传速度比你想象的要快。如果是这种情况,则将完成代码包装在对主队列的 Dispatch 调用中,并对 AlamoFire 完成处理程序执行相同的操作。我认为问题不在于传输速度,因为您的文件很小,而是从后台线程更新 UI。
标签: ios swift amazon-web-services amazon-s3