Page 146 - Web性能权威指南
P. 146

•   监听连接状态,以便采用最佳请求方式;
               •   对重试请求采用补偿算法,不要永远循环;
               •   离线时,尽可能记录并在将来发送请求;
               •   利用 HTML5 的 AppCache 和 localStorage 实现离线应用。


                          随着 HetNet 越来越多地得到部署,转换小区的频率将大幅上升,监控连接
                          状态和类型只会变得更加重要。不过也有一个好消息,即较小的小区也应
                          该提供较理想的总体吞吐量和延迟时间。


               8.5 爆发传输数据并转为空闲

               移动无线接口专门为爆发性传输做过优化,这一点应该尽可能利用。比如,把请求
               分组,尽可能多和快地下载数据,然后让无线模块转为空闲。这样,既可以获得最
               大的网络吞吐量,也能节约电量。


                          估算网络速度唯一正确的方式,就是使用它! LTE 和 HSPA+ 等最新一代
                          网络,每隔 1 ms 就会动态分配一次资源,而且更适合爆发性的数据传输。
                          换句话说,要想快,就要简单:批量请求,预先下载尽可能多的数据,然
                          后让网络空闲。


               基于此,一个重要的结论就是:渐进加载资源在移动网络中弊大于利。每次只下载
               一点数据会导致应用的吞吐量和延迟都摇摆不定,同时消耗的电量可能也会更多。
               因此,要尽可能预先下载数据,预测用户接下来可能需要看什么,提前下载,尽量
               让无线模块空闲:
               •   如果需要大型音频或视频文件,考虑提前下载整个文件,而不要以比特为单位地
                 流式下载;
               •   预先取得应用内容,通过测量和统计工具来辨别什么内容适合提前下载;
               •   预先取得第三方内容,比如广告,通过应用逻辑提前显示并更新它们的状态;
               •   允许设备关闭无线模块,保持其空闲,不要忘了优化和消除间歇性传输(参见 7.3.5
                 节中的“46% 的电量消耗仅传输 0.2% 的数据”)。


                                         构建和评估预取模型

                预取内容总会存在矛盾:一方面,你希望尽可能下载更少的数据,另一方面,你
                又想减少延迟和吞吐量的变动,同时降低对电池的影响。哪一方面更重要呢?这
                样问本身就是错误的。答案永远与应用的具体使用情境,以及你选择用来评估预
                取策略有效性的指标相关。



               130   |   第 8 章
   141   142   143   144   145   146   147   148   149   150   151