AWS Amplify iOS框架上传资源到S3速度极慢,如何优化上传速度?
上传速度优化方案
- 优先检查存储桶基础配置
确认S3存储桶所在区域和用户所在地区一致,跨区域上传会产生额外的网络延迟。若需要支持跨地区上传,开启S3传输加速功能,配置后Amplify会自动使用加速节点传输。 - 调整Amplify上传接口配置
300KB属于小文件,避免触发不必要的分片逻辑:调用uploadData时传入自定义StorageUploadDataRequest.Options,调整分片阈值到大于300KB的数值,减少分片协商带来的额外开销。如果上传的是本地图片文件,优先使用uploadFile接口替代uploadData,避免内存数据序列化的额外性能损耗。 - 修正Combine订阅的生命周期管理
你当前代码中的progressSink和resultSink如果是局部变量,会在函数执行结束后被ARC自动回收,导致上传流程被系统挂起,产生不必要的等待耗时。需要将两个sink实例存储为类的全局属性,保证上传全流程中订阅不会被提前释放。 - 关闭冗余调试配置
若当前是Debug环境,检查Amplify日志级别是否设置为.verbose或.debug,大量的网络请求日志打印会占用主线程资源拖慢上传速度,测试性能时将日志级别调整为.info或更高等级。 - 优化存储桶附加配置
确认存储桶没有开启不必要的额外功能:包括对象锁、频繁的版本控制、自定义KMS服务端加密。自定义KMS加密会在每次上传时额外调用KMS服务校验权限,会增加100-500ms的延迟,小文件场景优先使用默认SSE-S3加密即可。 - 检查后台运行配置
若上传是在应用退到后台时触发,需要为Amplify Storage配置后台上传会话,否则iOS系统会限制后台网络请求的优先级,导致上传速度被限制。
内容的提问来源于stack exchange,提问作者alionthego
相关产品推荐
相关产品推荐

