1、引言 网络优化一直是移动互联网时代的热议话题,弱网识别作为移动端弱网优化的第一步,受到的关注和讨论也是最多的。 本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。 3、技术背景 自从2010年携程推出”无线战略“,并发布移动端APP以来,无线研发团队对于客户端网络性能的优化就一直没有停止过。 11、参考资料 [1] TCP/IP详解 - 第17章·TCP:传输控制协议 [2] 快速理解TCP协议一篇就够 [3] 新手入门一篇就够:从零开发移动端IM [3] 腾讯原创分享(二):如何大幅压缩移动网络下 跨国弱网通信的优化实践 [14] 得物自研移动端弱网诊断工具的技术实践
客户端性能优化:1)成功率:核心 feed 接口,在弱网+非连接复用场景下提升 1.15%;2)耗时:非连接复用场景耗时减少14ms。 [4] 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路[5] 脑残式网络编程入门(三):HTTP协议必知必会的一些知识[6] 全面了解移动端DNS域名劫持等杂症:原理、根源、 HttpDNS解决方案等[7] 通俗易懂,理解移动网络的“弱”和“慢”[8] 现代移动端网络短连接的优化手段总结[9] 百度APP网络深度优化实践(DNS优化篇)[10] 爱奇艺APP网络优化实践(网络请求成功率优化篇 )[11] 美团点评的网络优化实践(大幅提升连接成功率、速度等)[12] 淘宝移动端统一网络库的架构演进和弱网优化实践[13] 爱奇艺APP跨国弱网通信的优化实践[14] 得物自研移动端弱网诊断工具的技术实践 [15] 携程APP移动网络优化实践(弱网识别篇)
一、移动端网络特点移动网络面临诸多挑战:网络特点:高延迟(2G:400ms,3G:100ms,4G:20ms)不稳定(频繁切换、信号强弱变化)带宽有限流量成本高二、弱网检测1.网络状态监听展开代码语言: ==request.id);}catch(e){//失败后重试request.retryCount++;if(request.retryCount>=3){//重试超过3次,标记失败awaitthis.markFailed ==request.id);}}}awaitthis.persist();}}七、弱网体验优化1.骨架屏展开代码语言:TXTAI代码解释//React骨架屏constProductCardSkeleton error&&(<Viewstyle={[styles.placeholder,style]}/>)}</View>);};八、总结移动端网络优化提升用户体验:网络检测:实时感知网络状态智能重试:指数退避提高成功率数据压缩 :减少流量消耗本地缓存:减少网络请求离线优先:弱网也能使用最佳实践:做好网络状态检测实现智能重试机制使用本地缓存减少请求优化弱网下的用户体验个人观点,仅供参考
前言 当前主流的移动端APP测试,都离不开网络。 二、IOS端的弱网络测试 IOS的弱网络测试也可以按照上面提到的方案,通过建立一个AP进行弱网络测试。 但除了这种方法外,IOS系统自身就可以模拟弱网络环境, 1. 打开“network link conditioner”,支持模拟wifi、3G、2G下的弱网络。 PS:弱网、2G、3G建议的上下行速率如下,同时还可以控制丢包率的数据 网络 上行 下行 弱网 10 工具做弱网测试 参考【fiddler弱网测试】篇 五、移动端其他专项测试项(如:CPU、流量、电量、性能等) 参考【android app性能及专项测试】
万村乐数字乡村系统提供了手机管理端,管理员和信息员都能在移动端操作,比如信息员可在手机管理端帮助村民录入信息、做网格信息采集。 问题:弱网下直接报错是最差体验最早的做法很粗暴,提交时检测网络,没网就弹"提交失败请重试",录了半天的表单全丢。万村乐的手机管理端如果也这么干,信息员在村里走一圈能气到摔手机。 正确做法是把移动端当成一个带本地数据库的终端,录完先落本地,网络好了再悄悄传,用户无感知。方案:本地队列加服务端幂等核心是一个本地待发队列。 这个从采集、校验、入库到反馈的链条打通,弱网同步只是其中一环,但最容易被技术团队忽略。我们在一个山区县的实测里,信息员单日人均录入从后台的 15 条提升到手机端的 40 条,差距就在不用回办公室。 数字乡村的决策依赖底层的村民档案、土地、补贴数据,如果因为弱网丢录、因为冲突错录,上层的分析和大屏全是错的,越看越自信地错。
本文将基于得物自研的移动端弱网诊断工具的开发过程,尽可能全面地为你总结和分享它的具体技术实践,希望带给你启发。 * 推荐阅读:淘宝技术团队分享的《淘宝移动端统一网络库的架构演进和弱网优化技术实践》,可一并阅读。2、网络性能概念一些网络性能指标:1)速率:指传送数据的速率。 慢请求指上文中的实际弱网,即高于50分位耗时+网络传播耗时;3)判断弱网-快请求率:在判断为弱网的前提下,实际上快请求的比例。 :请求速度、弱网适应、安全保障[3] 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”[4] 全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等[5] 美图App 的移动端DNS优化实践:HTTPS请求耗时减小近半[6] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇[7] 爱奇艺移动端网络优化实践分享:网络请求成功率优化篇[8] 美团点评的移动端网络优化实践
,实现去 SPDY 及规模化 IPv6/H3 协议簇的平滑过渡,为用户提供弱网更好、好网更优的 APP 加载浏览体验,支撑业务创造更多的可能性。 PS:关于弱网的技术文章可以深入详读:《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》《移动端IM开发者必读(二 ):史上最全移动弱网络优化方法总结》《美图App的移动端DNS优化实践:HTTPS请求耗时减小近半》《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》《爱奇艺移动端网络优化实践分享:网络请求成功率优化篇 淘宝弱网交互表现不一:图片17、参考资料[1] RFC 6555[2] 全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等》[3] 百度APP移动端网络深度优化实践分享(一):DNS 请求耗时减小近半》[18] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》[19] 爱奇艺移动端网络优化实践分享:网络请求成功率优化篇》[20] 美团点评的移动端网络优化实践:大幅提升连接成功率
----[- 1 -] 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障[链接] http://www.52im.net/thread-1413-1-1.html[摘要]短连接的优化在某些场景下对于移动端 ----[- 2 -] 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”[链接] http://www.52im.net/thread-1587-1-1.html[摘要] 本文的目的, ----[- 3 -] 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结[链接] http://www.52im.net/thread-1588-1-1.html[摘要]本文将针对上篇中提到的特性 ----[- 8 -] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇[链接] http://www.52im.net/thread-2678-1-1.html[摘要]网络优化解决的核心问题有三个 ,第一是安全问题,第二是速度问题,第三是弱网问题,它是网络优化中最为复杂且需要反复验证和分析的问题,我们的《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇(本文 *)》就是要深入探讨这个问题
2)弱网适应:移动端网络环境随时变化,经常出现网络连接很不稳定可用性差的情况,怎样在这种情况下最大限度最快地成功请求? 《腾讯原创分享(二):如何大幅压缩移动网络下APP的流量消耗(下篇)》 《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》 3、关于作者 ? 通过 HTTPDNS,连接多路复用,更好的数据压缩算法,可以把网络请求的速度优化到较不错的程度了,接下来再看看弱网和安全上可以做的事情。 5、针对移动弱网的优化 手机无线网络环境不稳定,针对弱网的优化,微信有较多实践和分享,包括: 1)提升连接成功率: 复合连接,建立连接时,阶梯式并发连接,其中一条连通后其他连接都关闭。 针对弱网的这些细致优化未成为标准,系统网络库没有内置,不过前两个客户端优化微信的开源网络库 mars 有实现,若有需要可以使用(详见《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》
安丛 ThoughtWorks 什么是弱网测试 在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式。 按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中。 根据资料显示,在坦桑尼亚等东非国家,普遍使用的都是2G网络,覆盖率达到40%以上,3G网络的覆盖都非常少,并且稳定性较差。由此,对于当前的App应用交付要求即至少在弱网以及无网状态下能正常运行。 3、现象:在弱网环境下,用户输入用户名和密码点击登录,应用链接超时返回用户名和密码错误提示。 原因:在弱网环境下的连接超时后,按照强网业务逻辑处理,导致返回超时异常。 总结 当然,出现以上问题的根本因素并不是弱网,在我们平时的PC应用中一样会遇到,但是这些问题在移动弱网环境下会表现的更突出。
[- 1 -] 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障 [链接] http://www.52im.net/thread-1413-1-1.html [摘要] 本文整理的有关内容 ---- [- 2 -] 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢” [链接] http://www.52im.net/thread-1587-1-1.html [摘要] 本文的目的 ---- [- 3 -] 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结 [链接] http://www.52im.net/thread-1588-1-1.html [摘要]本文接上篇《移动端 IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文将针对上篇中提到的特性,结合我们的实践经验,总结了四个方法来追求极致的“爽快”:快链路 ---- [- 8-] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇 [链接] http://www.52im.net/thread-2678-1-1.html [摘要]弱网问题,它是网络优化中最为复杂且需要反复验证和分析的问题
总结下来,跨国弱网优化实践的几个核心就是:1)能不请求网络就不请求;2)请求的链接目标 0-RTT;3)请求的内容越小越好。正文内容我们将逐个技术点展开了分享。 2、系列文章本文是系列文章中的第 3 篇,本系列文章的大纲如下:《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》《移动端 3、 跨国弱网样本摸底在 App 初期版本内增加请求链路的采样。样本数足够的情况下,可以清楚你要推广的市场是怎样的环境。 新手入门一篇就够:从零开发移动端IM[4] 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障[5] 全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等[6] 美图App (三):移动端弱网优化篇[10] 爱奇艺移动端网络优化实践分享:网络请求成功率优化篇[11] 美团点评的移动端网络优化实践:大幅提升连接成功率、速度等[12] 淘宝移动端统一网络库的架构演进和弱网优化技术实践
如果您还未阅读完上篇《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》,建议您先行读完后再续本文。 另外,《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》这篇文章也提到了本文所阐述的相关内容,强烈建议阅读。 2、系列文章 ▼ 本文是《移动端IM开发者必读》系列文章的第2篇: 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结 2)涉及移动端网络特性的文章: 《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》 《谈谈移动端 IM 开发中登录请求的优化》 《移动端IM开发需要面对的技术问题(含通信协议选择 :请求速度、弱网适应、安全保障》 《聊聊iOS中网络编程长连接的那些事》 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结
一、什么是弱网测试? 弱网测试作为健壮测试的重要部分,对于移动端测试来说必不可少。 现在移动端仍有相当多的用户主要使用4G、3G、2G等网络,另外因移动端产品使用场景多变,如进地铁、上公交、进电梯等使得弱网测试显得尤为重要。 毕竟考虑到各种场景的客户端展示及容错,能极大提升产品印象和用户体验! 二、怎么做弱网测试 1、用数据线连接iPhone和mac 2、打开xcode7,选择Xcode -> Windows->Devices ,如图: 3、选择自己的手机,右键单击选择Show Provisioning 如图: 5、iOS手机设置 三、弱网要测试什么?
www.baeldung.com/etags-for-rest-with-spring 作者:Eugen Paraschiv 译者:helloworldtang 目录 1.概览 2.REST和ETag 3. 3.使用 curl来验证ETag功能 一个通过客户端和服务器通信来简单地测试ETag特性的操作可以分解为以下步骤: – 首先,客户端发起一个对REST API的调用——响应包括了需要存储的ETag头,以便进一步使用 http://localhost:8080/rest-sec/api/resources/1 HTTP/1.1 200 OK ETag: "03cb37ca667706c68c0aad4cb04c3a211 因此,一个从ETag中获益的请求仍然会被作为一个标准请求处理,消耗正常消耗的任何资源(数据库连接等),并且只有在将它的响应返回给客户端之前,ETag支持才会启动。 在这一点上,ETag值将根据响应体计算出来并和响应一起返回给客户端;另外,如果请求携带了If-None-Match头,那也将会被处理。
而乱序则牵扯到多个报文重组的问题,所以Netem这里有两种方法来模拟乱序 第一种是固定的每隔一定数量的报文乱序一次 tc qdisc add dev eth0 root netem reorder 50% gap 3 上面这个是每隔3个数据包正常发送,其他的数据包延迟100ms发送 第二种方法是更接近显示情况的,就是随机的,用概率来选择乱序的报文 tc qdisc change dev eth0 root netem 对于模拟弱网环境,排查问题,这个工具必不可少,赶紧收藏!
目前移动端产品的使用用户所处的网络并非完全的流畅WIFI环境,仍有相当多的用户主要使用4G、3G、2G等网络,另外因移动端产品使用场景多变,如进地铁、上公交、进电梯等,网络环境复杂,信号稳定性也非常差。 image.png 弱网模拟一些场景: image.png 普通的弱网定义 在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式。 按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中。 3、 网络抖动,网络带宽波动较大,网络拥塞。 4、 网络信号弱,频繁断网重连。 上述4个条件,满足一个,就可以称之为音视频弱网,即由于网络原因,不能正常传输音视频数据。 在音视频场景下,4g网络的质量是没有办法保障,因此也算是弱网。4g场景下,卡顿时长是wifi场景下2~3倍。 解决方案 弱网问题解决根本办法,是提升现在网络质量,建设更多的网络基础设施。
现在的网络制式有2G、3G、4G、5G,还有越来越多的公众WiFi,不同的网络环境和网络制式的差异都会对用户使用APP造成一定的影响。弱网测试作为健壮性测试的重要部分,对于移动端测试必不可少。 那么对于健壮性测试中的弱网环境大家是如何构造的呢?让我们一起看看小编是如何解决这个问题的。 弱网环境测试主要依赖于弱网环境的模拟。环境搭建方式一般有两种:软件方式和硬件方式。 什么样的网络属于弱网 小于或等于2G速率的都属于弱网,随着5G的到来,3G网络速率的降低,未来3G也会逐渐划入弱网的行列。 如何进行弱网测试 1. SIM卡的网络切换 手机—设置—移动网络设置—网络类型选择 2. 具体弱网场景测试,常见场景包括:地铁、电梯、楼梯间、卫生间 3. 使用无线网卡、路由器修改宽带速度模拟网络速度 4. 用于模拟移动网络,移动网络连接一般不可靠 Only for selected hosts:可以指定域名拦截 ? 具体网络设置参考: ? 写在最后 测试的专业度在哪?
会打开文本在其中点击 Edit, 搜索文本m_SimulateModem, 找到如下内容,修改其中的数字(图中的300、150)为较大的数值,通常设为600-800点击File-保存 2.开启/关闭模拟弱网开关在 fiddler中点击Rules--Performance, 点击选中Simulate Modems Speeds,开启模拟弱网取消选中Simulate Modems Speeds,取消模拟弱网
官网移动端体验banner.png大家在移动端使用腾讯云官网时,都遇到过哪些体验问题呢?欢迎跟帖反馈哦,奖励多多~ 大家在移动端使用腾讯云官网时,都遇到过哪些体验问题呢? 欢迎跟帖反馈哦,奖励多多~ 体验对象:腾讯云官网 移动端 体验范围:包括但不限于 用户体验连贯性、功能可用性、易用性 等 活动时间:3月10号-4月30号 【奖励规则】 奖励对象:有效问题贡献者 *有效问题 :经评估采纳后的问题,均可作为有效问题进行评奖 奖项设置: 最佳问题奖:2名 (提出最具价值问题的同学) 奖品:腾讯云100元代金券 或 周边好礼 优秀问题奖:3名 (提出高价值问题的同学) 奖品:腾讯云 50元代金券 或 周边好礼 幸运奖:5名(随机抽取积极参与的同学) 奖品:腾讯云30元代金券 或 周边好礼 【参与方式】 手机扫码打开腾讯云官网 ,登录后进行产品体验。 扫码登录腾讯云官网.png