1、引言 网络优化一直是移动互联网时代的热议话题,弱网识别作为移动端弱网优化的第一步,受到的关注和讨论也是最多的。 本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。 [6] 技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解 [7] 冰山之下,一次网络请求背后的技术秘密 [8] 通俗易懂,理解移动网络的“弱”和“慢” [9] 史上最全移动弱网络优化方法总结 [10] 爱奇艺APP网络优化实践(网络请求成功率优化篇) [11] 美团点评的网络优化实践(大幅提升连接成功率、速度等) [12] 淘宝移动端统一网络库的架构演进和弱网优化实践 [13] 爱奇艺APP 跨国弱网通信的优化实践 [14] 得物自研移动端弱网诊断工具的技术实践
7、HttpDNS的缓存策略优化为解决缓存粒度细化可能导致的命中率下降问题,Cache2.0 引入了四重优化策略,最终实现了如下收益:缓存命中率提高了15%,缓存量、CPU 使用和出网流量降低了约70% 客户端性能优化:1)成功率:核心 feed 接口,在弱网+非连接复用场景下提升 1.15%;2)耗时:非连接复用场景耗时减少14ms。 HttpDNS解决方案等[7] 通俗易懂,理解移动网络的“弱”和“慢”[8] 现代移动端网络短连接的优化手段总结[9] 百度APP网络深度优化实践(DNS优化篇)[10] 爱奇艺APP网络优化实践(网络请求成功率优化篇 )[11] 美团点评的网络优化实践(大幅提升连接成功率、速度等)[12] 淘宝移动端统一网络库的架构演进和弱网优化实践[13] 爱奇艺APP跨国弱网通信的优化实践[14] 得物自研移动端弱网诊断工具的技术实践 [15] 携程APP移动网络优化实践(弱网识别篇)
一、移动端网络特点移动网络面临诸多挑战:网络特点:高延迟(2G:400ms,3G:100ms,4G:20ms)不稳定(频繁切换、信号强弱变化)带宽有限流量成本高二、弱网检测1.网络状态监听展开代码语言: :",state.isConnected);//检测网络类型if(state.type==='cellular'){console.log("当前使用移动网络");if(state.details.isConnectionExpensive ==request.id);}}}awaitthis.persist();}}七、弱网体验优化1.骨架屏展开代码语言:TXTAI代码解释//React骨架屏constProductCardSkeleton error&&(<Viewstyle={[styles.placeholder,style]}/>)}</View>);};八、总结移动端网络优化提升用户体验:网络检测:实时感知网络状态智能重试:指数退避提高成功率数据压缩 :减少流量消耗本地缓存:减少网络请求离线优先:弱网也能使用最佳实践:做好网络状态检测实现智能重试机制使用本地缓存减少请求优化弱网下的用户体验个人观点,仅供参考
前言 当前主流的移动端APP测试,都离不开网络。 除了基本功能测试以外,针对网络这块的测试也越来越重视,下面一起来看看 一、安卓(Android)端的弱网络测试 通过在中转机器(Mac/笔记本、PC端)上创建无线AP,手机通过这个WIFI热点连接网络 二、IOS端的弱网络测试 IOS的弱网络测试也可以按照上面提到的方案,通过建立一个AP进行弱网络测试。 但除了这种方法外,IOS系统自身就可以模拟弱网络环境, 1. PS:弱网、2G、3G建议的上下行速率如下,同时还可以控制丢包率的数据 网络 上行 下行 弱网 10 参考【fiddler弱网测试】篇 五、移动端其他专项测试项(如:CPU、流量、电量、性能等) 参考【android app性能及专项测试】
万村乐数字乡村系统提供了手机管理端,管理员和信息员都能在移动端操作,比如信息员可在手机管理端帮助村民录入信息、做网格信息采集。 问题:弱网下直接报错是最差体验最早的做法很粗暴,提交时检测网络,没网就弹"提交失败请重试",录了半天的表单全丢。万村乐的手机管理端如果也这么干,信息员在村里走一圈能气到摔手机。 正确做法是把移动端当成一个带本地数据库的终端,录完先落本地,网络好了再悄悄传,用户无感知。方案:本地队列加服务端幂等核心是一个本地待发队列。 这个从采集、校验、入库到反馈的链条打通,弱网同步只是其中一环,但最容易被技术团队忽略。我们在一个山区县的实测里,信息员单日人均录入从后台的 15 条提升到手机端的 40 条,差距就在不用回办公室。 数字乡村的决策依赖底层的村民档案、土地、补贴数据,如果因为弱网丢录、因为冲突错录,上层的分析和大屏全是错的,越看越自信地错。
本文将基于得物自研的移动端弱网诊断工具的开发过程,尽可能全面地为你总结和分享它的具体技术实践,希望带给你启发。 * 推荐阅读:淘宝技术团队分享的《淘宝移动端统一网络库的架构演进和弱网优化技术实践》,可一并阅读。2、网络性能概念一些网络性能指标:1)速率:指传送数据的速率。 :请求速度、弱网适应、安全保障[3] 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”[4] 全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等[5] 美图App 的移动端DNS优化实践:HTTPS请求耗时减小近半[6] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇[7] 爱奇艺移动端网络优化实践分享:网络请求成功率优化篇[8] 美团点评的移动端网络优化实践 [10] 淘宝移动端统一网络库的架构演进和弱网优化技术实践13、得物技术团队的其它文章汇总得物从0到1自研客服IM系统的技术实践之路得物自研客服IM中收发聊天消息背后的技术逻辑和思考实现得物从零构建亿级消息推送系统的送达稳定性监控体系技术实践得物基于
PS:关于弱网的技术文章可以深入详读:《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》《移动端IM开发者必读(二 ):史上最全移动弱网络优化方法总结》《美图App的移动端DNS优化实践:HTTPS请求耗时减小近半》《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》《爱奇艺移动端网络优化实践分享:网络请求成功率优化篇 淘宝弱网交互表现不一:图片17、参考资料[1] RFC 6555[2] 全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等》[3] 百度APP移动端网络深度优化实践分享(一):DNS :作用、原理、实现思路等》[7] 微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)》[8] 移动端IM实践:实现Android版微信的智能心跳机制》[9] 移动端IM实践:WhatsApp 请求耗时减小近半》[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[摘要] 本文的目的, ----[- 7 -] 百度APP移动端网络深度优化实践分享(二):网络连接优化篇[链接] http://www.52im.net/thread-2479-1-1.html[摘要] HTTP协议的基础是连接 ----[- 8 -] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇[链接] http://www.52im.net/thread-2678-1-1.html[摘要]网络优化解决的核心问题有三个 ,第一是安全问题,第二是速度问题,第三是弱网问题,它是网络优化中最为复杂且需要反复验证和分析的问题,我们的《百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇(本文 *)》就是要深入探讨这个问题
2)弱网适应:移动端网络环境随时变化,经常出现网络连接很不稳定可用性差的情况,怎样在这种情况下最大限度最快地成功请求? 通过 HTTPDNS,连接多路复用,更好的数据压缩算法,可以把网络请求的速度优化到较不错的程度了,接下来再看看弱网和安全上可以做的事情。 5、针对移动弱网的优化 手机无线网络环境不稳定,针对弱网的优化,微信有较多实践和分享,包括: 1)提升连接成功率: 复合连接,建立连接时,阶梯式并发连接,其中一条连通后其他连接都关闭。 针对弱网的这些细致优化未成为标准,系统网络库没有内置,不过前两个客户端优化微信的开源网络库 mars 有实现,若有需要可以使用(详见《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》 7、写在最后 移动端网络优化这个话题非常庞大,本文只是在学习过程中从优化思路上列举了目前业界常见的优化点,还有很多细节很多更深入的优化没涉及到,网络层实践开发经验不足,若有错误欢迎指出。
在弱网情况下,实时性要求较高的场景一般会通过牺牲清晰度来保障低延时,而清晰度要求高的场景则会通过播放端增加延时换取高质量的音视频数据。 今晚 7:00,我们邀请到了百度智能云视频云RTC技术负责人 孙健 老师为大家重点讲解在保持清晰度和流畅度不变的情况下如何进行弱网对抗优化,并详细介绍百度智能云BRTC在弱网环境下的业务实践。
安丛 ThoughtWorks 什么是弱网测试 在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式。 不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。 从测试角度来说,需要额外关注的场景就远不止断网、网络故障等情况了。 按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中。 由此,对于当前的App应用交付要求即至少在弱网以及无网状态下能正常运行。 如何做弱网测试 弱网环境测试主要依赖于弱网环境的模拟。环境搭建方式一般有两种:软件方式和硬件方式。 总结 当然,出现以上问题的根本因素并不是弱网,在我们平时的PC应用中一样会遇到,但是这些问题在移动弱网环境下会表现的更突出。
如果您还未阅读完上篇《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》,建议您先行读完后再续本文。 另外,《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》这篇文章也提到了本文所阐述的相关内容,强烈建议阅读。 2、系列文章 ▼ 本文是《移动端IM开发者必读》系列文章的第2篇: 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结 2)涉及移动端网络特性的文章: 《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》 《谈谈移动端 IM 开发中登录请求的优化》 《移动端IM开发需要面对的技术问题(含通信协议选择 :请求速度、弱网适应、安全保障》 《聊聊iOS中网络编程长连接的那些事》 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结
[- 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 [摘要]本文接上篇《移动端 ---- [- 7 -] 百度APP移动端网络深度优化实践分享(二):网络连接优化篇 [链接] http://www.52im.net/thread-2479-1-1.html [摘要]在《百度APP移动端网络深度优化实践分享 ---- [- 8-] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇 [链接] http://www.52im.net/thread-2678-1-1.html [摘要]弱网问题,它是网络优化中最为复杂且需要反复验证和分析的问题
2、系列文章本文是系列文章中的第 3 篇,本系列文章的大纲如下:《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》《移动端 IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践》(* 本文)如果您是IM开发初学者,强烈建议首先阅读《新手入门一篇就够:从零开发移动端IM》。 IM[4] 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障[5] 全面了解移动端DNS域名劫持等杂症:技术原理、问题根源、解决方案等[6] 美图App的移动端DNS优化实践:HTTPS 请求耗时减小近半[7] 百度APP移动端网络深度优化实践分享(一):DNS优化篇[8] 百度APP移动端网络深度优化实践分享(二):网络连接优化篇[9] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇 [10] 爱奇艺移动端网络优化实践分享:网络请求成功率优化篇[11] 美团点评的移动端网络优化实践:大幅提升连接成功率、速度等[12] 淘宝移动端统一网络库的架构演进和弱网优化技术实践[13] 谈谈移动端
3.使用 curl来验证ETag功能 一个通过客户端和服务器通信来简单地测试ETag特性的操作可以分解为以下步骤: – 首先,客户端发起一个对REST API的调用——响应包括了需要存储的ETag头,以便进一步使用 Content-Type: application/json;charset=UTF-8 Content-Length: 52 – 客户端在下一步发起REST API请求时,会使用If-None-Match 因此,一个从ETag中获益的请求仍然会被作为一个标准请求处理,消耗正常消耗的任何资源(数据库连接等),并且只有在将它的响应返回给客户端之前,ETag支持才会启动。 在这一点上,ETag值将根据响应体计算出来并和响应一起返回给客户端;另外,如果请求携带了If-None-Match头,那也将会被处理。 7.总结 这篇文章只是简单地讲了使用Spring和ETag可以做些什么。
一、什么是弱网测试? 弱网测试作为健壮测试的重要部分,对于移动端测试来说必不可少。 现在移动端仍有相当多的用户主要使用4G、3G、2G等网络,另外因移动端产品使用场景多变,如进地铁、上公交、进电梯等使得弱网测试显得尤为重要。 毕竟考虑到各种场景的客户端展示及容错,能极大提升产品印象和用户体验! 二、怎么做弱网测试 1、用数据线连接iPhone和mac 2、打开xcode7,选择Xcode -> Windows->Devices ,如图: 3、选择自己的手机,右键单击选择Show Provisioning 如图: 5、iOS手机设置 三、弱网要测试什么?
这里主要分析下圆环的实现,蓝色的进度条圆环由左右两边构成,这里以右半边的为例,html结构为.circle-right > .right-inner(为了视觉效果,把蓝色放在里面了,而非覆盖在灰色上),如下图:
本文作者:IMWeb 结一 原文出处:IMWeb社区 未经同意,禁止转载 ”本系列教程为实战教程,是本人移动端重构经验及思想的一次总结,也是对sandal及sheral UI的一次全方位剖析,
对于模拟弱网环境,排查问题,这个工具必不可少,赶紧收藏!
会打开文本在其中点击 Edit, 搜索文本m_SimulateModem, 找到如下内容,修改其中的数字(图中的300、150)为较大的数值,通常设为600-800点击File-保存 2.开启/关闭模拟弱网开关在 fiddler中点击Rules--Performance, 点击选中Simulate Modems Speeds,开启模拟弱网取消选中Simulate Modems Speeds,取消模拟弱网