首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >百度APP移动端网络深度优化实践分享(二):网络连接优化篇

百度APP移动端网络深度优化实践分享(二):网络连接优化篇

作者头像
JackJiang
发布于 2019-05-09 08:07:00
发布于 2019-05-09 08:07:00
7420
举报
文章被收录于专栏:即时通讯技术即时通讯技术

本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为《百度App网络深度优化系列《二》连接优化》,感谢原作者的无私分享。

一、前言

在《百度APP移动端网络深度优化实践分享(一):DNS优化篇》里大家了解到网络优化一般会首选优化DNS,而接下来的HTTP协议成为优化的重点,一般优化者会选择协议切换,合并请求,精简数据包大小等手段来对HTTP协议进行优化,严谨的说这都不属于网络优化的范畴。

HTTP协议的基础是连接,所以我们的《百度APP移动端网络深度优化实践分享(二):网络连接优化篇》应运而生,希望对大家在网络方向的学习和实践有所帮助。

本系列文章目录如下:

《百度APP移动端网络深度优化实践分享(一):DNS优化篇》 《百度APP移动端网络深度优化实践分享(二):网络连接优化篇》(* 本文) 《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》

(本文同步发布于:http://www.52im.net/thread-2479-1-1.html

二、相关文章

TCP/IP详解 - 第17章·TCP:传输控制协议》 《TCP/IP详解 - 第18章·TCP连接的建立与终止》 《TCP/IP详解 - 第21章·TCP的超时与重传》 《通俗易懂-深入理解TCP协议(上):理论基础》 《通俗易懂-深入理解TCP协议(下):RTT、滑动窗口、拥塞处理》 《理论经典:TCP协议的3次握手与4次挥手过程详解》 《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》

三、技术背景

连接优化需要解决两个核心问题:

1)连接建立耗时较长,导致请求的总时长变长,进而影响用户体验;

2)在多变的网络环境下,连接建立的过程可能会失败,导致成功率下降,进而影响用户体验。

百度App承载着亿级流量,对于每一个请求都需要追求耗时短,成功率高的体验。从协议角度出发,如何才能做到这一点呢?首先我们来看下建立连接耗时的原理。

▲ 建立连接耗时的原理

从上图我们能清晰的看出:

1)DNS Query需要1个RTT(Round-Trip Time,即往返时间),百度App都是基于HTTPDNS服务的,所以大部分会命中缓存,如果降级走了系统DNS,也会命中缓存,命中不了的由于是基于UDP协议,所以在连接耗时上没有太大的影响,线上的数据也能说明这点;

2)TCP要经历SYN,SYN/ACK,ACK三次握手的1.5个RTT,不过ACK和ClientHello合并了,所以就是1个RTT;

3)TLS(Transport Layer Security,即传输层安全性协议)需要经过握手和密钥交换2个RTT。

综上所述:DNS、TLS、TCP握手阶段用了4个RTT才到了ApplicationData阶段,也就是数据开始传输阶段。

通过上面的分析可以总结出,如果我们能尽量的将TLS和TCP的RTT减少,将会大大降低连接耗时的时间。

四、连接优化我们都能做什么?

百度App的优化目标分为两类,一类是TLS的连接优化,一类是TCP的连接优化。

下面,我们将分别介绍基于这两种优化的思路和实践总结。

五、连接优化之“TLS的连接优化”

TLS的连接优化,需要服务端和客户端都需要支持,共同完成优化手段,包括Session Resumption和False Start。

5.1 Session Resumption

Session Resumption中文意思是会话复用,下图讲解了Session Resumption的协议原理。

▲ Session Resumption的协议原理

通过上图可以看出TLS密钥协商交换的过程没有了,但具体是如何实现的呢?包含两种方式,一种是Sesssion Identifier,一种是Session Ticket。

1)Session Identifier:

Session Identifier中文为会话标识符,更像我们熟知的session的概念。是 TLS 握手中生成的 Session ID。服务端会将Session ID保存起来,客户端也会存储Session ID,在后续的ClientHello中带上它,服务端如果能找到匹配的信息,就可以完成一次快速握手。

2)Session Ticket:

Session Identifier存在一些弊端,比如客户端多次请求如果没有落在同一台机器上就无法找到匹配的信息,但Session Ticket可以。Session Ticket更像我们熟知的cookie的概念,Session Ticket用只有服务端知道的安全密钥加密过的会话信息,保存在客户端上。客户端在ClientHello时带上了Session Ticket,服务器如果能成功解密就可以完成快速握手。

不管是Session Identifier还是Session Ticket都存在时效性问题,不是永久生效,对于这两种方式大家可以查看参考资料【4】。百度App的网络协议层对这两种方式都是支持的,省去了TLS握手过程中证书下载,密钥协商交换的环节,节省了1个RTT的时间。

5.2 False Start

False Start的中文意思是抢跑,下图讲解了False Start的协议原理。

▲ False Start的协议原理

上图很清晰的说明在TLS第一步握手成功后,客户端在发送Change Cipher Spec Finished的同时开始数据传输,服务端在TLS握手完成时直接返回应用数据。应用数据的发送实际上并未等到握手全部完成,所以称之为抢跑。

从结果看省去了1个RTT的时间。False Start有两个前提条件:

一是要通过应用层协议协商ALPN(Application Layer Protocol Negotiation)握手;

二是要支持前向安全的加密算法。

False Start在未完成握手的情况下就发送了数据,前向安全可以提高安全性,具体协议实现,大家可以查看参考资料【3】。百度App的网络协议层对False Start是支持的。

这里说句题外话,其实TCP层有个类似的连接优化手段叫Fast Open,感兴趣的同学,可以查看参考资料【5】。

5.3 Session Resumption和False Start的区别

两者对于TLS来说都是节省一个RTT,Session Resumption在第一次握手时还是需要2个RTT,在第二次握手时才能复用减少到1个RTT。False Start是端上的行为,故每次都会减少到1个RTT。

六、连接优化之“TCP的连接优化”

TCP的连接优化,我们先从连接池说起,首先让我们来认识下连接池都有哪些类型。

6.1 连接池

▲ 连接池的类型

上图展示了连接池的不同类型,都是大家耳熟能详的协议连接池,有低级连接池,包含TCP连接池(管理HTTP请求的连接)和WebSocket连接池(管理WebSocket连接)。

有高级连接池,包括HTTP代理连接池(管理HTTP代理请求的连接),SpdySession连接池(管理SPDY和HTTP/2请求的连接),SOCKS连接池(管理SOCKS和SOCKS5代理的连接),SSL连接池(管理HTTPS请求的连接)。

不同类型的连接池以组合的形式互相复用能力:

1)SSL连接池管理的是SSLSocket,但SSLSocket又依赖于TCP连接池提供的TCPSocket;

2)HTTP代理连接池如果走HTTP协议,那么就需要TCP连接池提供TCPSocket,如果走HTTPS协议,那么就需要SSL连接池提供SSLSocket;

3)SpdySession连接池依赖SSL连接池提供SSLSocket,这里需要说明下,虽然HTTP/2协议没有强制绑定HTTPS,但是在实际开发中确实都是绑定HTTPS,百度App使用ALPN来协商HTTP/2;

4)SOCKS连接池管理的SOCKSSocket和SOCKS5Socket都需要依赖TCP连接池提供的TCPSocket,虽然SOCKS5支持UDP,但cronet网络库暂时没有实现;

5)WebSocket连接池依赖TCP连接池提供的TCPSocket,声明下这里没有说明WSS(Web Socket Secure)的情况。

TCP连接优化是一个比较复杂的内容,百度App做了针对性场景优化,包括预连接,连接重建,备用连接,复合连接。

6.2 预连接

▲ 预连接和连接重建

预连接:预先创建好的连接。它解决的场景是在App使用阶段可以无耗时的获取连接。下面用四个问答来解释预连接。

问题一:预连接是否能解决所有网络请求的提前连接建立?

答:答案是否定的,预连接需要业务方进行核心业务的评估,针对核心的域名进行预连接的建立。

问题二:预连接既然针对的是特定的域名,那么是如何配置的呢?

答:采用域名+连接数的方式进行配置,比如https://a.baidu.com|2,表示给a.baidu.com这个域名配置两条预连接,这里要说明下,在HTTP/1.x协议下,网络库的实现都会对于单域名有最大连接数的限制,不同网络库的个数限制不一样,有5个也有6个,但对于HTTP/2协议,这个连接数就只能是1个。

问题三:预连接是如何建立的?

答:在网络库初始化的时候,会根据使用者的配置延迟5s进行预连接的建立,主要是考虑网络库在冷启动下对于启动性能的影响,为了保证网络库的整体性能,预连接的总个数限制在20个。

问题四:预连接是如何保持的?

答:在网络库初始化的时候,除了进行预连接的建立,还会创建一个预连接的定时器,这个定时器会每隔31s,这个值的设定取决于BFE(Baidu Front End,是七层流量的统一接入系统)和BGW(Baidu Gate Way,百度自主研发的四层负载均衡平台)对超时的最小值设定,根据使用者的配置重新建立连接。

6.3 连接重建

连接重建,将连接重新建立。它解决的场景是App网络状态发生变化,IP地址变化,导致连接不可用。下面用三个问答来解释连接重建。

问题一:连接重建是否针对连接池里的所有连接?

答:答案是肯定的。

问题二:连接重建的过程是什么样的?

答:在网络状态变化的时候,第一步会清除掉连接池里的idle socket,何为idle socket?即空闲socket,对于从未使用过的空闲socket超过60秒清除,对于使用过的空闲socket超过90秒清除。第二步重建连接需要等待200ms,目的是等待DNS先重建完成。

问题三:连接重建对于性能有影响吗?

答:出于性能考虑,连接重建的连接个数限制是100个。

6.4 备用连接

▲ 备用连接和复合连接

备用连接,预备的连接。它解决的场景是正常发送一个请求当group内无连接可用的时候(何为group?group是管理socket的最小单元,内部包含活跃socket,空闲socket,连接任务,等待请求)。下面用三个问答来解释备用连接。

问题一:备用连接是否针对所有请求?

答:答案是肯定的。

问题二:备用连接的过程是什么样的?

答:当有请求来临时,连接池内无连接可用,会启动一个定时器开启备用连接,定时器的间隔时间是250ms,与主连接进行竞争,如果主连接因为网络抖动或者网络状态不好,导致连接失败,那么备用连接就直接发送请求。如果主连接成功,那么备用连接就被取消掉。

问题三:备用连接的目的是什么?

答:在连接池无连接的情况下,务必是要创建连接的,在主连接之外加一个备用连接,会大大提升创建连接的成功率,从而提升用户体验。

6.5 复合连接

复合连接,即多条连接。它解决的场景是为了多个IP地址的连接选取问题。下面用三个问答来解释复合连接。

问题一:复合连接是否针对所有请求?

答:答案是肯定的。复合连接可以全局开关,百度App现阶段暂时没有开启复合连接。

问题二:复合连接的过程是什么样的?

答:众所周知域名DNS查询一般情况下会返回多个IP,我们以域名查询返回两个IP为例

1)如果结果中存在IPv6的地址,那么会优先选用IPv6的地址,这个规则follow HappyEyeBall机制(可参考系列一对于HappyEyeBall的介绍)。

2) 接下来这两个IP会按照顺序尝试建立连接,如果第一个IP返回失败,将立即开始连接第二个IP。

3)如果第一个IP率先成功返回,那么第二个IP将被加入连接尝试列表并停止所有尝试连接。

4)如果第一个IP失败,会立刻开始第二个IP的连接。

5)如果第一个IP处于pending状态,那么会启动一个定时器,默认延迟2s会发起第二个IP的连接,如果是多个IP将会递归连接,需要特别说明下,不同的网络制式延迟时间会不一样,这样体验也会更好。

问题三:复合连接的目的是什么?

答:复合连接的好处是提供最优的IP选取机制,但也会带来服务端的高负载,所以使用的时候需要进行综合评估。

七、连接优化的最佳实践

百度App目前客户端网络架构由于历史原因还未统一,不过我们正朝着这个目标努力。

我们的中心思想是以系统网络库的API调用接口为中心,上层建立网络门面,供外部便捷调用,底层通过系统机制以AOP的方式将cronet(chromium的net模块)注入进系统网路库,达到双端网络架构统一,能力复用。

下面着重介绍下连接优化在AndroidiOS网络架构中的位置及实践。

7.1 连接优化在Android网络架构的位置及实践

▲ 连接优化在Android网络架构的位置

百度App的Android网络流量目前都在okhttp之上,上层进行了网络门面的封装,封装内部的实现细节和对外友好的API,目前我们正在进行重构,默认采用Android标准的网络接口HttpURLConnection,它的底层由系统提供的okhttp的实现。

订制方面利用URL Stream Protocol机制将HttpURLConnection底层网络协议栈接管为cronet,供各个业务和基础模块使用,连接优化的所有内容在cronet网络库内部实现。

7.2 连接优化在iOS网络架构的位置及实践

▲ 连接优化在iOS网络架构的位置

百度App的iOS网络流量目前都在cronet之上,上层我们使用iOS的URL Loading System机制将cronet stack注入进URLSession里,这样我们就可以直接使用URLSession的API进行网络的操作而且更易于系统维护,在上层封装了网络门面,供各个业务和基础模块使用。

在cronet内部实现了预连接(主要针对百度App的几个核心域名进行预连和保活),连接重建(针对所有请求),备用连接(针对所有请求),复合连接(iOS上暂时没有开启),Session Resumption(针对所有请求),False Start(针对所有请求)。

八、实际收益

连接优化的收益主要体现在网络时延和网络成功率上,这两点收益需要结合业务来说,以百度App Feed刷新这个典型业务场景为例。

Feed刷新文本请求网络时延降低16%,Feed刷新图片请求网络时延降低12%,可谓收益相当明显。

成功率方面,Feed刷新文本请求成功率提升0.29%,Feed刷新图片请求成功率提升0.23%,也是非常不错的收益。

九、本文结语

连接优化是个持续性的话题,没有最优只有更优。上面介绍的百度App的一些经验和做法并不见得完美,但我们会继续深入的优化下去,持续提升百度App的网络性能。

以上优化由百度App团队,内核团队,OP团队共建完成。最后感谢大家的辛苦阅读,希望对你有所帮助,后面会继续推出-百度App网络深度优化系列《三》弱网优化,敬请期待。

十、参考资料

[1]https://chromium.googlesource.co ... ild_instructions.md [2] https://chromium.googlesource.co ... ild_instructions.md [3] False Start:https://tools.ietf.org/html/rfc7918 [4] Session Resumption:https://tools.ietf.org/html/rfc5077 [5] TCP Fast Open:https://tools.ietf.org/html/rfc7413 (原文链接:点此进入

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
百度APP移动端网络深度优化实践分享(二):网络连接优化篇
在《百度APP移动端网络深度优化实践分享(一):DNS优化篇》里大家了解到网络优化一般会首选优化DNS,而接下来的HTTP协议成为优化的重点,一般优化者会选择协议切换,合并请求,精简数据包大小等手段来对HTTP协议进行优化,严谨的说这都不属于网络优化的范畴。
JackJiang
2019/04/24
1.3K0
百度APP移动端网络深度优化实践分享(一):DNS优化篇
网络优化是客户端几大技术方向中公认的一个深度领域,所以百度App给大家带来网络深度优化系列文章。
JackJiang
2019/04/22
3.8K0
爱奇艺移动端网络优化实践分享:网络请求成功率优化篇
由于移动网络的复杂性特点,编写高质量、体验好的具备网络通信能力的移动端应用(尤其是即时通讯这类网络质量高度敏感的应用)有很大的挑战性。
JackJiang
2020/04/21
2.8K0
干货 | Trip.com APP QUIC应用和优化实践
作者简介 Logan,携程移动开发专家,关注大前端技术领域,对APP网络、性能、稳定性有深入研究。 Trip.com APP(携程国际版)主要服务于海外用户,这些用户请求大多需要回源至国内,具有链路长、网络不稳定、丢包率高等特性。为了解决用户请求耗时长、成功率低的痛点,在2021年初我们尝试引入QUIC来提升网络质量。经过近一年的优化实践,取得了显著的成果:网络耗时降低20%,成功率提升至99.5%,极大地改善了用户体验。本文将从客户端的视角详细介绍QUIC的应用和优化经验。 一、背景 Trip.com
携程技术
2022/04/24
1.3K0
干货 | Trip.com APP QUIC应用和优化实践
干货 | 降低20%链路耗时,Trip.com APP QUIC应用和优化实践
作者简介 竞哲,携程资深后端开发工程师,关注网络协议、RPC、消息队列以及云原生等领域。 一、背景 QUIC 全称 quick udp internet connection,即“快速 UDP 互联网连接”(和英文 quick 谐音,简称“快”),是由 google 提出的使用 udp 进行多路并发传输的协议,是HTTP3的标准传输层协议。近几年随着QUIC协议在IETF的标准化发展,越来越多的国内外大厂开始在生产环境对QUIC进行落地,以此提升某些业务场景下的服务性能。 Trip.com App作为一
携程技术
2022/04/15
1.4K0
干货 | 降低20%链路耗时,Trip.com APP QUIC应用和优化实践
现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障
众所周之,通常我们开发一个移动端应用,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用iOS中的开源AFNetworking/OKHttp这样的网络库(Android中可以用HttpURLConnection或者开源的okhttp库),管理好请求线程和队列,再自动做一些数据解析,就结束了。
JackJiang
2018/08/29
3.5K0
移动端IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践
做海外市场,特别目标是面向全球的用户,网络的重要性不言而喻。试想一个移动端应用,比如即时通讯IM,聊天消息的本质就是人跟人在说话,一条消息从发送到接受需要10秒的时间,这恐怕会让用户崩溃,随之就是被无情地卸载,开拓海外市场那就是做梦了。
JackJiang
2024/06/27
1640
移动端IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践
Android客户端网络预连接优化机制探究
一般情况下,我们都是用一些封装好的网络框架去请求网络,对底层实现不甚关注,而大部分情况下也不需要特别关注处理。得益于因特网的协议,网络分层,我们可以只在应用层去处理业务就行。但是了解底层的一些实现,有益于我们对网络加载进行优化。本文就是关于根据http的连接复用机制来优化网络加载速度的原理与细节。
2020labs小助手
2021/06/17
1.7K0
弱网不弱-TQUIC助力业务提速30%
导语 | 腾讯sTGW如何助力核心业务用户登录耗时降低30%,下载场景500ms内请求成功率从HTTPS的60%提升到90%?本文将对此进行详细介绍,为大家分享腾讯移动端APP如何在弱网、跨网场景下同样取得媲美正常网络的用户体验。 (作者:腾讯云网关sTGW团队dalek) 腾讯核心业务用户登录耗时降低30%,下载场景500ms内请求成功率从HTTPS的60%提升到90%,腾讯的移动端APP在弱网、跨网场景下取得媲美正常网络的用户体验。这是腾讯网关sTGW团队打造的TQUIC网络协议栈在实时通信、音
腾讯云开发者
2021/12/01
1.8K0
美图App的移动端DNS优化实践:HTTPS请求耗时减小近半
本文引用了颜向群发表于高可用架构公众号上的文章《聊聊HTTPS环境DNS优化:美图App请求耗时节约近半案例》的部分内容,感谢原作者。
JackJiang
2018/12/25
3.5K0
Black Hat USA 2020议题:SSRF漏洞利用新思路
2020年BlackHat大会上,Joshua Maddux介绍了一种针对SSRF的新颖利用思路,得到了广泛的关注。此类攻击是通过构造一个HTTPS Server,使TLS session中携带攻击载荷,攻击行为触发主要通过一个受限的SSRF漏洞(甚至一个钓鱼网页),结合TLS协议和DNS协议的特性,把攻击报文发到受害者内网的TCP服务中,达到SSRF漏洞攻击面扩大的效果。本文将针对此攻击进行较深入介绍和演示,供大家学习参考。
FB客服
2021/05/20
1.1K0
Black Hat USA 2020议题:SSRF漏洞利用新思路
【腾讯经验】闪现社区App网络优化
游戏社区的网络请求主要为App内部的api请求,这类型请求的特点是数据量相对较小、请求集中、并发量高且不可缓存等,原有的App网络框架有如下问题:
硬骨见小鹿
2021/02/24
2.6K0
【腾讯经验】闪现社区App网络优化
90%的人都不懂的TLS握手优化
随着 HTTP/2 的逐渐普及,以及国内网络环境越来越糟糕(运营商劫持和篡改),HTTPS 已经开始成为主流。HTTPS 在 TCP 和 HTTP 之间增加了 TLS(Transport Layer Security,传输层安全),提供了内容加密、身份认证和数据完整性三大功能,同时也给 Web 性能优化带来新的挑战。上次写的「使用 BoringSSL 优化 HTTPS 加密算法选择(https://imququ.com/post/optimize-ssl-ciphers-with-boringssl.html)」一文中,我介绍了如何针对不同平台启用最合适的传输加密算法。本篇文章我打算继续写 HTTPS 优化 —— TLS 握手优化。
Bug开发工程师
2019/05/04
6.2K0
会中切换网络总掉线?腾讯会议用这种方案让你好好开会
也许你有这样的体验:当你加入腾讯会议开会,老板正在发布重要任务时,你恰好要进电梯时 wifi 切换成了 cellular,画面开始「转菊花」,网络断开重连却需要好久,最终老板的指示你一个字都没听清楚
腾讯云开发者
2023/04/26
1.5K0
真正“搞”懂HTTPS协议19之HTTPS优化
  这是本系列的最后一篇了,其实本篇的内容也跟前两篇TLS的握手和优化有关系。其实HTTPS的核心就是TLS的明文握手连接,前两篇我们花了很大的篇幅来聊这些,另外一个就是在TLS握手完成后的密闻传输部分了。
zaking
2023/02/17
5960
移动端IM开发者必读(二):史上最全移动弱网络优化方法总结
本系列文章引用了腾讯技术专家樊华恒《海量之道系列文章之弱联网优化 gad.qq.com/article/detail/29546》的章节,感谢原作者。
JackJiang
2018/08/29
2.7K0
[技术分享]携程App的网络性能优化实践
在4月23日~25日举行的QCon全球软件开发大会(北京站)上,携程技术中心无线开发总监陈浩然分享了《移动开发网络性能优化实践》,总结了携程在App网络性能优化方面的一些实践经验。在2014年接手携程无线App的框架和基础研发工作之后,陈浩然面对的首要工作就是App客户端性能优化,尤其是网络服务性能,这是所有App优化工作的重中之重。以下为正文。 首先介绍一下携程App的网络服务架构。下图是携程App的架构设计(典型的层次化设计): 由于携程业务众多,开发资源导致无法全部使用Native
携程技术
2018/02/06
1.6K0
[技术分享]携程App的网络性能优化实践
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
本文将介绍百度基于golang实现的统一长连接服务,从统一长连接功能实现和性能优化等角度,描述了其在设计、开发和维护过程中面临的问题和挑战,并重点介绍了解决相关问题和挑战的方案和实践经验。
JackJiang
2024/03/07
4070
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
淘宝移动端统一网络库的架构演进和弱网优化技术实践
自 2013 年 ALLIN 无线到今天,已经走过 10 个年头,淘宝终端统一网络库 AWCN (Ali Wireless Connection Network) 从淘内孵化,一路过来伴随着淘宝业务的发展,经历集团 IPv6 战役、协议升级演进等,逐步沉淀为阿里集团终端网络通用解决方案,是兼具高性能、多协议、可容灾、可观测的终端网络基础统一设施。
JackJiang
2023/10/19
1.3K0
淘宝移动端统一网络库的架构演进和弱网优化技术实践
移动端常见白屏问题优化之网络优化篇
图片加载作为重中之重的App体验指标,端侧的白屏问题则是其中最为严重、也是最为常见的问题之一。想象一下如果你在浏览交易商品、社区帖子等核心场景下,图片无法完成加载是多么糟糕的体验。
JackJiang
2024/09/12
3180
移动端常见白屏问题优化之网络优化篇
推荐阅读
相关推荐
百度APP移动端网络深度优化实践分享(二):网络连接优化篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档