IOS网络优化点
1.DNS查找时间
为了最大限度地减少DNS查询时间所产生的延迟,应遵循以下的实践:
最小化应用使用的专有域名的数量。按照路由的一般工作方式,多个域名是不可避免的。最好能做到以下几点:
身份管理(登录、注销、配置文件)
数据服务(API端点)
CDN(图片和其他静态人工产品)
在应用启动时不需要连接所有的域名,可能只需要身份管理和初始画面所需的数据。对于后续的子域名,尝试更早地进行DNS解析(DNS预先下载)。
2.SSL握手时间
SSL握手主要是验证服务器证书,同时共享用于通信的随机密钥。这一过程会耗费较多的时间。
遵循以下实践优化SSL握手:
最大程度地减少应用发起的连接数。因此,也需要减少应用连接的独有域名的数量。
复用连接:为所有的HTTPS请求添加头(Connection:Keep-alive)
使用域分片(不理解)
3.网络类型
遵循以下实践使应用在各种网络环境下都能正常使用:
设计时考虑不同的网络类型。
对于流媒体,最好选择HTTP实时流或任何可用的自适应比特率流媒体技术,这些技术可以在某一时刻对可用带宽进行动态切换,切换至当前带宽的最佳流质量,从而提供流畅的视频播放。
对于非流媒体内容,需要确定在单位拉取时应该下载多少数据,并且数据量必须时自适应的。
同样,在弱网状态下,不要打开视频自动播放功能,节约用户的流量第一。
对于自定义的非流媒体数据拉取,要保持对服务器的关注。让客户端发送网络特征数,服务器决定返回的记录条数,这样可以在不发布新版本的情况下进行适应性改变。
出现失败时,在随机的、以指数增长的延迟后进行重试,但一定要设置最多的自动重试次数,不能不断地刷服务器
设置强制刷新的间隔最短时间。当用户明确要求刷新时,不要立即发出请求。相反,检查与上次请求时间间隔是否小于阀值或已经存在该请求。
使用可到达性库发现网络状态的变化。使用指示条向用户展示不可用的状态,让用户了解潜在的连接问题。
不要缓存网络状态。要始终使用网络敏感度高的任务的最新值。
基于网络类型下载内容,对于图像,可预先展示小尺寸图像,当用户点击查看原图时下载原图。 对于视频内容,最好有一个与之关联的预览图下。 可仿照WhatsApp对不同内容的网络类型进行可选设置。
预先下载:在Wi-Fi网络中预先下载用户在后续时刻需要关注的内容。随后可以使用缓存内容,最好分次下载内容,在使用之后关掉网络连接。