Page 145 - Web性能权威指南
P. 145
了这些,你就会知道为优化移动应用而对各种带宽和延迟所作的估算结果,最多就
是一种瞬态数据点。
iPhone 4 的“天线门”是无法准确预测无线性能的一个典型事例:信号质
量会受到你握持手机的手与天线距离的影响。“你拿手机的姿势不对”这句
流行语正是由此而来。
移动网络的延迟和带宽估计值基本上就是几十或几百 ms,最多 1 s。实际上,虽然
6.4.2 节中“自适应比特流”那一部分介绍的优化策略,即将数据分成多个几秒钟的
块,对持久数据流(比如视频)还是有用的,但对带宽的估计值绝对不该缓存,或
者用于决定将来的吞吐量,就算是对 4G 网络也不行!可能你刚刚测量的速度是几
百 Kbit/s,而换了只手速度就到了 Mbit/s 以上。
移动网络中的流媒体应用
流媒体应用在移动网络中是一个难题。如果你需要一次长时间的下载,而且知道
要用到整个文件,就应该一次性下载该文件,然后让无线模块尽量空闲更长时间。
前面介绍的 Pandora 应用中下载音乐文件的例子就是一个典型。
可是,如果由于文件太大,或用户行为受限,不能一次性下载完整的文件(比如
高清视频),那就应该利用 6.4.2 节中“自适应比特流”那一部分介绍的优化策略,
适应网络吞吐量的不断变化。此时,电池耗电可能更快,但至少你能保证最佳用
户体验!当然,也可以建议用户切换到 Wi-Fi 网络。
在任何网络中,要估计端到端的带宽和延迟都很难,移动网络尤甚。可以说,你的
估计十有八九都不靠谱。相反,应该基于相关网络属于哪一代的粗粒度信息,相应
地调整代码。记住,知道移动网络属于哪一代或者是什么类型,不能保证任何端到
端的性能,但你却能知道无线网络第一跳的延迟数据,以及运营商网络中端到端的
数据。这一块的详细信息,请参考 7.5.1 节中的“移动网络中的延迟与抖动”,以及
表 7-6。
最后,除了吞吐量和延迟之外,还应该考虑连接中断。要把连接中断作为常态,而
不是例外。不管网络是不是可用,你的应用都应该尽量保持运行,而且应该根据请
求类型和特定的问题作出反应:
• 不要缓存或试图猜测网络状态;
• 调度请求、监听并诊断错误;
• 瞬态错误总会发生,不可忽视,可以采取重试策略;
移动网络的优化建议 | 129