《高性能iOS应用开发干货》-网络优化

网络监听

蜂窝无线系统(LTE、4G、3G 等)对电量的消耗远大于 WiFi 信号。根源在于 LTE 设备 基于多输入、多输出技术,使用多个并发信号以维护两端的 LTE 链接。
应该避免在没有连接WIFI的情况下进行高带宽消耗操作,因此,我们需要

  • 在进行任何网络操作之前,先检查网络的连接是否可用
  • 持续监视网络的可用性,并在连接状态变化时给予适当反馈
    苹果公司提供了示例代码(http://apple.co/1Q3gRKL),以检查和监听网络状态的变化。如 果 你 的 项 目 使 用 了 CocoaPods, 那 么 请 使 用 Tony Million 的 Reachabilitypod(https:// github.com/tonymillion/Reachability)。

网络请求过程

正常一条网络请求需要经过的流程是这样:
1.DNS 解析,请求DNS服务器,获取域名对应的 IP 地址。
2.与服务端建立连接,包括 tcp 三次握手,安全协议同步流程。
3.连接建立完成,发送和接收数据,解码数据。

DNS查找

发起连接的第一步是 DNS 查找。如果你的应用严重依赖网络操作,DNS 的查找时间会使应用变慢。

为了最大限度地减少 DNS 查询时间所产生的延迟,你应该遵循以下的最佳实践。
• 最小化应用使用的专有域名的数量。按照路由的一般工作方式,多个域名是不可避免的。
最好是能做到以下几点:
(1) 身份管理(登录、注销、配置文件) (2) 数据服务(API 端点)
(3) CDN(图片和其他静态人工产品)
有可能需要其他域名(例如,用于提供视频、上传检测数据、具体的子数据服务、广告 投放,甚至是国家特定的全球本地化)。如果子域名数量上升至两位数,那么势必会引 发担忧。
• 在应用启动时不需要连接所有的域名,可能只需要身份管理和初始画面所需的数据。对 于后续的子域名,尝试更早地进行 DNS 解析,也被称为 DNS 预先下载。为实现此操作, 你可以参考以下两点。
如果子域名和主机在控制范围内,你可以配置一个预设的 URL,不返回任何数据,只 返回 HTTP 204 的状态码,然后提前对该 URL 发起连接。
第二个方法是使用 gethostbyname 执行一个明确的 DNS 查找。然而,针对不同的协议, 主机可能会解析至不同的 IP,例如,HTTP 请求可能会解析至一个地址,而 HTTPS 会 解析至另一个地址。虽然不是很常见,但第 7 层的路由可以根据实际的请求解析 IP 地 址,例如,图像是一个地址,视频是另外一个地址。鉴于这些因素,在连接之前解析 DNS 经常是无用的,对主机进行伪连接会更有效。

SSL握手时间

为了安全起见,可以假设应用中所有的连接均是通过 TLS/SSL 的(使用 HTTPS)。HTTPS在连接开始时,先进行 SSL 握手,SSL 握手主要是验证服务器证书,同时共享用于通信的 随机密钥。这一操作听起来简单,但是却有很多步骤,还会耗费较多时间(见图 7-3)。


图 7-3.png

你应该遵循以下的最佳实践。

  • 最大程度地减少应用发起的连接数。因此,也需要减少应用连接的独有域名的数量

  • 请求结束后不要关闭 HTTP/S 连接。
    为所有的HTTPS请求添加头Connection: keep-alive。这确保了同样的连接在下一次 请求时可以复用。

  • 使用域分片。如此一来,虽然连接的是不同的主机名,你也可以使用同一个 socket,只 要它们解析为相同的 IP,可以使用相同的证书(例如,在通配符域)就行了。 域分片在 SPDY 及其后续版本——HTTP/2(https://http2.github.io)——中是可用的。你 需要一个支持上述任意一种格式的网络库。

end 书中内容都来自于《高性能iOS应用开发干货》,本文只进行简单的摘录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342