如今的移动设备(手机、平板)已经非常普及,用户通过不同的应用(apps)来丰富日常生活。近些年用户对手机的依赖性持续上升,越来越多的用户关心电池使用时长这一个重要的指标,因此优化这些移动应用的功耗成了目前亟须解决的问题。
在移动应用中,网络传输的功耗开销占其主要部分。有研究\cite{Li_2014}发现平均网络传输的功耗开销可达整个应用运行状态下功耗开销的40%,其中HTTP相关功耗占据整个网络传输功耗的80%。由此可见,减少HTTP相关功耗开销可以显著地影响应用的整体功耗,增加电池的使用时长。
过去大家都在硬件或者操作系统层面优化网络传输功耗,直到最近几年才有一些研究如何在应用层降低网络传输功耗,其中将多个HTTP请求进行合并是一个非常有效的方法,并已经成功应用于浏览器中\cite{Kim_2014}\cite{Grigorik_2013}\cite{Nielsen_1997}。如图\ref{823163},用户在浏览网页的时候会经常出现如下的行为:首先请求一个主要的部分(如html网页),然后解析网页中包含的其他元素(如css样式表、图片、javascript脚本以及一些AJAX请求等)再分别请求,直到展示出完整的内容,用户再进行下一步操作。因此如果将一个会话中的请求进行合并可以有效降低功耗,原理详见附录1。也有研究(Li 2015 Li 2016 Li 2014)表明在移动应用中对网络请求进行合并也可以降低功耗,但实际中浏览器上的网络行为与在应用上有明显的差异,在浏览器的主要行为中,很容易发掘出资源的依赖关系以及请求次序,但在移动应用中这种相互关系很难被发掘,在什么情况下将请求进行合并,是否有一种自动的机制去完成这些步骤,这是本文主要关心的问题。