iOS 性能优化方案-弱网优化

这篇具有很好参考价值的文章主要介绍了iOS 性能优化方案-弱网优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、iPhone手机弱网环境配置

 

选择现有网络状态

iOS 性能优化方案-弱网优化

或自定义网络状态

iOS 性能优化方案-弱网优化

设置参数:

每个参数的含义大致如下:

in bandwidth :下行带宽

in packet loss :下行丢包率

in delay :下行延迟(ms)

out bandwidth :上行带宽

out packet loss :上行丢包率

out delay :上行延迟

DNS delay :DNS解析延迟,这个功能安卓不知道怎么模拟

protocol :协议-- 可选Any、IPv4、IPv6

interface :接口--可选ALL、WLAN、Cellular

二、优化方案

1、必要的状态呈现

1.1、无网络提示

监听网络状态的改变,可用的 AFNetworking 的 AFNetworkReachabilityStatus。
无网络状态时,进行告知用户的处理。

1.2、加载网络请求前,添加“正在加载中的动画”

如MBProgressHUD

1.3、加载网络请求完成后,需要先移除网络状态动画,并增加判定空数据处理。(判定是网络原因,还是无数据的原因)

1.4、善用状态切换的通知,为界面做出不同的变化。

在 2G、3G、4G、5G、WiFi等不同的网络做出不同的状态图切换,或者交互切换。

2、网络请求优化

2.1、制定最合适的超时时间

对总读写超时(从请求到响应的超时)、首包超时、包包超时(两个数据段之间的超时)时间制定不同的计算方案,加快对超时的判断,减少等待时间,尽早重试。这里的超时时间还可以根据网络状态动态设定,例如在网络状态为 2G、3G、4G、5G、WiFi下设置不同的超时时间。

让用户可以取消长时间运行或者速度很慢的网络操作。

2.2、多子模块请求的“延迟性”

以用户等待容忍度不超过 2s 为原则,像首页这种多个业务模块一起呈现的页面,如果一次性请求完所有的接口数据,会等待很久,所以可以对多子模块,进行分段的“延迟”请求。

  • 优先模块:请求数据量少、业务上需要优先显示的。
  • 延后模块:数据量大、类似列表的多条数据,适合放置加载动画,时长上用户可接受性强,所以除了放在后面外,可做分页处理、滑动后的延迟加载处理。

2.3、固定模块加入缓存机制、或增量更新机制

对首页及特定一级页面进行数据缓存,在一定的有效时间内再次请求可以直接从缓存读取数据,也可避免空白页出现影响体验。
或者进行判断数据是否有增量变化,有点的话在插入动画的前提下,进行数据的更新。

2.4、多模块的重新加载操作

像一些多模块,模块之间相关联的复杂页面,多个模块会有多个请求,当某个请求失败需要添加“重新加载”的按钮时,建议所有请求重新请求一遍,防止模块之间关联的数据出现偏差,或者 UI 布局错乱。
所以,如果有做网络请求失败后,重新加载的按钮/下拉操作,建议是:

  • 多模块再各自请求一遍。
  • 复杂 UI 重新计算一下。

原因是:弱网环境,本身请求到的数据可能也不齐全,多个请求或许只能拿到部分数据,而大部分情况是,各模块是相辅相成的。

2.5、预加载设置“临界值”

根据当前 UITableView 的所在位置,除以目前整个 UITableView.contentView 的高度,来判断当前是否需要发起网络请求:在当前页面已经划过了 70% 的时候,就请求新的资源,加载数据;

2.6、从请求这个动作下手

优化DNS查询:应尽量减少DNS查询,做DNS缓存,避免域名劫持、DNS污染,同时把用户调度到“最优接入点”。
减小数据包大小和优化包量:通过压缩、精简包头、消息合并等方式,来减小数据包大小和包量。
优化ACK包:平衡冗余包和ACK包个数,达到降低延时,提高吞吐量的目的。

2.7、断线重连

在无线网络中有太多的原因导致数据连接中断了。这里可以使用CDN。
(CDN 是构建在数据网络上的一种分布式的内容分发网。 CDN 的作用是采用流媒体服务器集群技术,克服单机系统输出带宽及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避免单点失效带来的不良影响。)

2.8、减少数据连接的创建次数

由于创建连接是一个非常昂贵的操作,所以应尽量减少数据连接的创建次数,且在一次请求中应尽量以批量的方式执行任务。如果多次发送小数据包,应该尽量保证在2秒以内发送出去。在短时间内访问不同服务器时,尽可能地复用无线连接。

3、用户体验优化

3.1、内容分先后显示

例如,一个业务模块文字图片都有的情况,加载可能一直卡在50%-90%的时候,那么先加载文字,再加载图片。

3.2、进度的驱使

不管网络条件如何,加载进度始终是从50%起,并且停留在大约98%进度左右的地方。

3.3、固定的 UI 显示布局,加载时可预加载虚拟布局视图

类似知乎,在加载时,“正在加载中的动画/视图”,改为主页面显示预加载的占位图。

3.4、弱网加载失败/空数据,可添加“重新加载”的按钮,或可增加下拉刷新操作

例如:请求无数据/网络失败,添加‘重新加载“按钮,让用户意识到处于“可控”状态,降低用户焦躁情绪。

4、图片加载优化

4.1、使用更快的图片格式

严格说也不算弱网下的优化,但一个更快的图片格式真的很重要!这里建议采用 WebP 格式。(WebP 格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有 JPEG 的2/3,并能节省大量的服务器带宽资源和数据空间。但 WebP 是一种有损压缩。相较编码 JPEG 文件,编码同样质量的 WebP 文件需要占用更多的计算资源。)

4.2、根据网络状态呈现不同精度的图

如(对于原图是 600X480 的图片):

  • 2/3G 使用低清晰度图片:下发 300X240,精度为 80 的图片;
  • 4G 普通清晰度图片下发 600X480,精度为 80 的图片;
  • WiFi 高清晰度图片(最好根据网速来判断,WiFi 也有慢的):下发 600X480,精度为 100 的图片。

4.3、SDWebImage 参数选项

根据使用场景,参照 SDWebImageOptions常量说明,对图片的加载进行。

4.4、不加载图片

弱网情况下,在一些不影响操作,并能通过简单文字的描述告知用户该区域的内容,可以不加载图片,待到网络流畅状态再进行图片的加载。当然这种方法要视情况而定,或者一般都在 APP 的设置选项,增加一个“弱网状态不显示图片”的按钮。文章来源地址https://www.toymoban.com/news/detail-491025.html

到了这里,关于iOS 性能优化方案-弱网优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总

    苹果APP安装包ipa如何安装在手机上?很多人不知道怎么把ipa文件安装到手机上,这里就整理了苹果APP安装到iOS设备上的方式,仅供参考 苹果APP安装包ipa如何安装在手机上?使用过苹果手机的人应该深有感触,那就是苹果APP安装要比安卓APP安装复杂、困难很多,很多人不知道怎

    2024年01月16日
    浏览(49)
  • iOS:iPhone手机分辨率、尺寸、导航栏尺寸、Tabbar尺寸对比(菜鸟教程)

    手机机型(iPhone) 屏幕尺寸(inch) 逻辑分辨率(pt) 设备分辨率(px) 缩放因子 (Scale Factor) 像素密度(ppi) 5(s/se) 4 320×568 640×1136 @2x 326 6(s)/7/8/se2 4.7 375×667 750×1334 @2x 326 6 Plus/7 Plus/8 Plus 5.5 414×736 1242×2208 @3x 401 X/XS/11 Pro 5.8 375×812 1125×2436 @3x 458 XR/11 6.1 414×896 828×1792 @2x 326 XS Max/11 Pro Max 6

    2024年02月09日
    浏览(64)
  • 让苹果iOS的手机iPhone和电脑Safari浏览器支持油猴脚本

    官方的AppStore是没有油猴插件(Tampermonkey)的,官方插件不仅少,功能被阉割,相对弱小,还收费。嗯,这很苹果第三方拓展。 这是油猴插件(Tampermonkey)的下载地址,上面是老版本,下面是新版本。 https://safari.tampermonkey.net/tampermonkey.safariextz https://www.tampermonkey.net/?browser=s

    2024年02月07日
    浏览(111)
  • iPhone开发--Xcode15下载iOS 17.0.1 Simulator Runtime失败解决方案

    爆句粗口,升级后公司网络下载iOS 17.0.1 Simulator Runtime一直出错,每次出错后都得重新开始下载,oh,f**k。上一次在在家里的网络升级成功。 进入网址:https://developer.apple.com/download/all/ 之后找到iOS 17.0.1 Simulator Runtime,点击下载,这个通过浏览器下载。 之后在命令行运行下面的

    2024年02月08日
    浏览(62)
  • iPhone15系类LDR6020P 超简外围手机转接器/拓展坞方案

    目前市面上的手机大部分已经取消3.5音频耳机接口,仅仅保留了Type-c口。但是追求音质和零延迟的用户仍然会选择3.5mm有线耳机,因为在玩手机游戏的时候,音画不同步真的很影响游戏体验,所以Type-C转3.5mm接口线应运而生。 #iPhone15将全系采用C口#最新款iPhone 15必须要采用Ty

    2024年02月07日
    浏览(36)
  • IOS系统模拟弱网方法

    有些APP开发完成后,需要在3G、山间小涧、电梯等信号不好、网络不稳定的地方进行测试。但是,现实往往不允许我们为了一个真实的弱网环境而消耗人力物力和时间。这时候,我们就需要模拟出一个弱网环境来。这次就说说ios弱网模拟的一种方法。 1.正文内在电脑下载安装

    2024年02月14日
    浏览(29)
  • linux性能优化-IO调度优化

    Linux I/O调度器(Linux I/O Scheduler)Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能,介于通用块层和块设备驱动程序之间。 noop(No Operation) :通常用于内存存储的设备。 cfq(Completely Fair Scheduler ) :完全公平调度器,进程平均使用IO带宽。 deadline :针对

    2024年02月10日
    浏览(59)
  • iOS性能测试方法-获取手机内存数据

    最近在研究如何获取iOS手机性能数据(主要是内存),看了一圈目前主流的方法主要是两种: 1.阿里开源的iOS自动化测试工具tidevice;2.xcode自带的instruments; 1.cpu 正常在20%-40%左右,超过80%需要引起重视。 2.内存 rss:私有内存+所有共享内存,pss:私有内存+比例分配共享内存,

    2024年02月07日
    浏览(50)
  • [iOS开发]UITableView的性能优化

    1. 用轻量级对象 比如用不到事件处理的地方,可以考虑使用 CALayer 取代 UIView 2. 不要频繁地调用UIView的相关属性 比如 frame 、 bounds 、 transform 等属性,尽量减少不必要的修改 不要给 UITableViewCell 动态添加 subView ,可以在初始化 UITableViewCell 的时候就将所有需要展示的添加完毕

    2024年04月11日
    浏览(44)
  • 如何使用Fiddler对手机进行弱网测试?(干货教程)

    1.首先,fiddler连接手机 1)Tools-Options-Connections-设置端口8888,勾选Allow remote computers to connect 2)配置手机 注:手机和电脑需要在同一局域网下        手机进入网络详情,将代理改为手动        设置主机名、端口 主机名在该电脑控制台下输入ipconfig即可查到IP   2.连接好手机后

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包