目前,我正在使用 amazon s3 来存储所有对象,例如图像和视频。我正在使用 IOS AWS SDK 上传对象。
我的申请流程是
- 用户拍照或录制视频
- 用户在表单上添加附加信息,例如 Instagram 的标题(使用 Alamofire)
- 用户点击继续,然后 AWS 将开始上传图片 和视频到 S3 使用 IOS AWS SDK
- 对象成功上传到S3后,S3会响应 有一个链接
- 最后使用 Alamofire 发送信息,包括来自 S3 作为 POST API 的参数
我面临的问题是执行 AWS 上传 + 调用 API 需要相当多的时间。这确实是一种糟糕的用户体验。大多数图像大约小于 5 MB
我的解决方案
调整图像大小,但是视频呢?
用户点击继续后,而不是执行 AWS 上传 + 调用 API,为什么不把它作为不同屏幕上的背景,这样 用户无需等待加载指示
什么方法可以很好地解决这个问题?。谢谢
最佳答案
您的问题可以改写为“如何最大限度地减少上传延迟?”的问题
最重要的是将 AWS 用于所有应用基础设施。
如果您使用 S3 作为文件存储并从外部服务器上传,由于网络延迟,您将面临上传速度的巨大影响。
- 当用户上传时,您的后端进程将首先写入磁盘 - 使用 EBS SSD。
- 选择网络延迟增加的 EC2。
- 将您的所有 AWS 资源置于同一区域和相同的可用性 区域。
您可能要考虑的另一种解决方案是使用 S3 post-operation,而不是 in-operation。
这只是意味着您的服务器接受上传并将 URL 返回给用户,其中独立的后台进程与 S3 外部用户请求同步。
在这种情况下,您将拥有用户 -> 服务器 -> 用户。
现在您有用户 -> 服务器 -> S3 -> 用户。
关于ios - AWS s3 上传 + api 耗时太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41906831/