0x02 合并请求

附录1 移动网络尾功耗分析

附录2 HTTP请求功耗分析

HTTP属于多层网络协议栈中应用层,如图\ref{826446},下层还有TCP/IP以及各种物理层协议。当发出一个HTTP请求的时候,下层协议会对包体进行层层封装,这个过程包含计算校验和(checksum)、复制数据以及对数据进行引用等,这些过程都会产生功耗。
HTTP请求也会产生一些额外的开销:1. HTTP包体并不是全部都是数据部分,每个HTTP都包含着200B到2KB大小的头部分,这个部分包含着包体的元数据。2. 因为HTTP协议建立在TCP协议之上,每次发出一个HTTP请求,都需要建立一个TCP连接,而建立一个TCP连接都需要进行三次握手,断开一个TCP连接都需要进行四次挥手,这个额外的握手协议并没有传输任何HTTP数据。3. 当进行完一个HTTP请求后,移动终端会保持无线射频状态处于活跃状态,并不会立即关闭无线射频,这个阶段会产生如附录1所示的高能尾(Tail Energy)。
尽管这些开销看起来很小,但在之前的研究\cite{Li_2014a}表明下载1 byte的数据跟下载1024 bytes的数据消耗的能量差不多,下载10000 bytes也仅仅比下载1000 bytes时多了两倍。然而大部分情况下,移动应用在每次请求中仅发送极少量数据,\cite{Ihm_2011}75%的非流媒体请求包体大小都不大于10k bytes。因此如果优化或减少不必要的HTTP请求,那么就会显著降低功耗。