简介
本文介绍如何通过网络优化的方式提升 COS SDK 上传、下载等 COS 操作的成功率和速度。
功能说明
在移动应用开发中,网络优化对于用户体验至关重要,因为移动网络固有的弱网问题、DNS问题、连接性能等等都相较于固定网络更为严重,因此,优化移动端网络,显的尤其重要。
COS SDK 提供了一系列网络优化功能,包括 DNS 解析优化、网络线路加速、弱网优化以及自定义网络层功能。
因此,如果您对上传、下载等 COS 操作的成功率、延迟较为敏感,则可以使用本文档提供的方案进行 COS 访问的网络优化。
方案概述
优化方式
方式一:DNS 解析优化
背景与问题
COS SDK 默认使用的是 LocalDNS,DNS 解析过程中可能会遇到解析异常、域名劫持、跨网访问等问题,导致上传下载等 COS 操作缓慢甚至失败。
解析异常:导致无法连接服务器,请求失败。
域名劫持:访问到非 COS 服务器,导致请求和响应失败。
跨网访问:导致网络请求缓慢、甚至请求超时失败。
优化方案
计费说明
方式二:网络线路加速
背景与问题
腾讯云在全球很多地区部署了存储中心,客户可以选择性地启用这些存储中心。但即便如此,还是无法避免一些终端用户与存储中心距离间隔太远,以及部分客户存在跨地区甚至跨海访问的业务场景。长距离的数据访问通常就意味着更长的网络链路和更大的传输时延,而且一旦中间某一个环节出现网络抖动、丢包等问题,就会拉低整条链路的访问速度和成功率。
优化方案
针对长距离访问场景,网络链路过长导致的网络访问质量不佳问题,可以通过 COS 全球加速、EdgeOne 等将用户的请求递交给最靠近用户的边缘节点,就近接收用户的数据。再通过腾讯云打磨多年的加速网络,选择最优链路,将数据传送到存储中心,详情请参见 网络线路加速。
计费说明
方式三:弱网优化
背景与问题
尽管4G 和5G 网络的覆盖范围在不断扩大,但在许多地方,特别是偏远地区和室内环境,用户仍然可能会遇到网络信号弱或不稳定的情况。此外,即使在网络覆盖良好的地方,用户也可能会因为网络拥堵等原因遇到网络性能下降的问题。
在弱网环境下,可能会遇到以下问题:连接慢、数据传输慢、丢包率高、网络波动大,这些问题都会影响上传下载等 COS 操作的成功率和速度。
优化方案
COS SDK 已支持 QUIC 协议。QUIC 协议是一种基于 UDP 实现的低延迟高可靠通信协议,目前标准的 HTTP3 协议正是基于 QUIC 实现的。QUIC 支持 0-RTT 建立连接和无队头阻塞的多路复用,可以比较容易的在端侧实现用户态拥塞控制,更大限度地利用网络带宽进行实际的数据传输,在丢包率和网络延迟较高的弱网环境也可提供高质量的数据通信。同时,QUIC 还支持连接迁移,在移动端频繁切换网络的场景中,也可平滑过渡,保证网络不中断。
通过 EdgeOne 支持 QUIC 协议的网络入口,并进行 COS 相关的配置,使用 COS SDK 接入 QUIC 网络。
计费说明
方式四:自定义网络层
如果 COS SDK 默认的网络实现不符合您的要求或者您的 APP 本身已经开发了完善的自定义网络库并做了相关的网络优化,则可以使用在 COS SDK 中自定义网络层的方式。
这是比较灵活的方式,采用这种方式优化的网络问题、优化效果、成本等均由开发者的自定义网络层决定。
注意:
自定义网络层功能需要对网络编程有一定的了解,如果您不确定如何使用这个功能,我们推荐您使用 COS SDK 的默认网络实现。
实践建议
由于开发者业务方向和用户群各不相同,上述各优化方式均有一定的成本,下面对一些常见场景给出实践建议。
注意:
以下建议仅供参考,具体实践还需结合自身业务需求和成本预算进行决定。
国内用户:DNS解析优化
海外用户:DNS解析优化 + 网络线路加速
弱网环境:弱网优化
示例工程
Android 示例 Demo 请参见 COS SDK 网络优化 Demo 下的 CosServiceFactory。
iOS 示例 Demo 请参见 COS SDK 网络优化 Demo 下的 AppDelegate。