【问题标题】:AWS s3 upload + api taking too longAWS s3 上传 + api 耗时太长
【发布时间】:2021-10-17 02:13:47
【问题描述】:

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

我的申请流程是

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

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

我的解决方案

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

  2. 用户点击继续后,不再进行 AWS 上传 + 调用 API,为什么不把它作为不同屏幕上的背景,这样 用户无需等待加载指示器

什么方法可以很好地解决这个问题?谢谢

【问题讨论】:

  • 只是一个想法:当用户登陆他写附加信息的页面时,为什么不在后台开始上传?如果他取消或从不发布,您可以在未完成的情况下取消上传,或者发送命令将其从 AWS 数据库中删除。
  • 检查 AWS Cognito 和 S3 存储桶是否在同一个区域。如果它们位于不同的区域,则上传内容需要很长时间。
  • 尝试在收到链接后将其打印到控制台。我敢打赌,上传速度比你想象的要快。如果是这种情况,则将完成代码包装在对主队列的 Dispatch 调用中,并对 AlamoFire 完成处理程序执行相同的操作。我认为问题不在于传输速度,因为您的文件很小,而是从后台线程更新 UI。

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


【解决方案1】:

您的问题可以改写为“如何最大限度地减少上传延迟?”

最重要的是所有应用基础设施都使用 AWS。

如果您使用 S3 作为文件存储并从外部服务器上传,由于网络延迟,您将面临上传速度的巨大影响。

  • 当用户上传时,您的后端进程将首先写入磁盘 - 使用 EBS SSD。
  • 选择网络延迟增加的 EC2。
  • 将您的所有 AWS 资源放在相同的区域和相同的可用性 区。

您可能要考虑的另一个解决方案是使用 S3 后操作,而不是操作中。

这仅仅意味着您的服务器接受上传并将 URL 返回给用户,其中独立的后台进程与 S3 外部用户请求同步。

在这种情况下,您将拥有 用户 -> 服务器 -> 用户

现在你有用户 -> 服务器 -> S3 -> 用户

【讨论】:

    【解决方案2】:

    当速度和用户体验至关重要时,您可能希望使用像 AWS cloudfront 这样的内容交付网络服务。

    当带宽和存储的低成本比访问速度更重要时,Amazon S3 是理想的选择,而 Cloudfront 则完全关乎访问速度。

    请参阅this 链接了解如何使用您的 S3 存储桶设置云端。

    【讨论】:

      【解决方案3】:

      当您的用户分布在全球各地时,您应该启用并使用 S3 Transfer Acceleration。这将减少不靠近您的存储桶区域的用户的上传时间。

      此外,上传 5 MB 需要一些时间,具体取决于您的移动连接。所以你应该在客户端调整图像的大小,你可以考虑提前开始上传,例如当用户输入详细信息时,上传已经在后台运行。

      【讨论】:

        【解决方案4】:

        我注意到在配置中包含“区域”可以在 7 秒内加快上传速度。

        可能还有其他改进方法,我目前正在研究包括直接端点 URL。或许就是这样:https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

        【讨论】:

          【解决方案5】:

          对我来说,它没有在上传功能中提供内容类型选项。节省了 60 多秒

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-02
            • 2021-08-07
            • 2018-02-27
            相关资源
            最近更新 更多