If you’re looking for the optimal way to batch requests to reduce overall network traffic, then prefetching is for you.
Video Link


Why Prefetching?

很多场景下,app发出的网络请求是连续的,譬如,一个正在下拉中的每一项都包含一张缩略图的列表。

如果可以预见的话,将未来即将发生的网络请求合并到一起进行发送,比起单独来发送各自请求,一方面减少了网络请求对于资源的消耗(如:节约电量与带宽),另一方面也使得app界面运行更加流畅。

但是,如何确定预加载的度,是一个值得思考的问题。加载的太少了,起不到期望的效果;加载太多了,反而拖慢app。


How much do we prefetch?

有2个可以参考的指标

  1. 空间:预加载1~5mb的数据
  2. 时间:预加载未来1~2min内会用到的数据

此外,预加载必须要考虑用户所处的网络环境

  • 4G:12张图片
  • 2G:3张图片

一个很好的衡量用户网络环境的方法是,计算某一个特定大小文件的传输时间。

在一个网络连接的窗口期,可以把之前hold住的网络请求,连同后面即将加载的网络请求一同打包发送。

GcmNetworkManager为你提供了强力的工具用以完成上面的需求。


===Ending===