ios - AWS s3 上传 + api 耗时太长

标签 ios swift amazon-web-services amazon-s3

目前,我正在使用 amazon s3 来存储所有对象,例如图像和视频。我正在使用 IOS AWS SDK 上传对象。

我的申请流程是

  1. 用户拍照或录制视频
  2. 用户在表单上添加附加信息,例如 Instagram 的标题(使用 Alamofire)
  3. 用户点击继续,然后 AWS 将开始上传图片 和视频到 S3 使用 IOS AWS SDK
  4. 对象成功上传到S3后,S3会响应 有一个链接
  5. 最后使用 Alamofire 发送信息,包括来自 S3 作为 POST API 的参数

我面临的问题是执行 AWS 上传 + 调用 API 需要相当多的时间。这确实是一种糟糕的用户体验。大多数图像大约小于 5 MB

我的解决方案

  1. 调整图像大小,但是视频呢?

  2. 用户点击继续后,而不是执行 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/

相关文章:

ios - 一台设备上的多个 facebook 帐户

iphone - 如何禁用 View 的可访问性,包括它的所有 subview ?

amazon-web-services - AWS Glue 可以写入 DynamoDB 吗?

ios - 在卸载/重新安装应用程序之间以编程方式清除 NSUserDefaults 数据库

ios - 使用 CGAffineTransformScale() 设置 View 的变换时防止 subview 调整大小

swift - 有条件的协议(protocol)符合协议(protocol)

ios - 将数据从 SettingsView Controller 传递到 Mainstoryboard - Swift

swift - 无论如何,要使用解析将对象保存到另一个用户吗?

ruby - 没有这样的文件或目录 - getcwd

amazon-web-services - AWS 步骤函数 - 重用上一步的输出