发送一批 http 请求时的天线使用情况

Posted

技术标签:

【中文标题】发送一批 http 请求时的天线使用情况【英文标题】:Antenna usage when sending a batch of http requests 【发布时间】:2014-08-01 12:32:28 【问题描述】:

我正在尝试优化联网时的电池使用情况。例如,如果我将所有 http 请求保存在一个数组中,然后我将它们全部发送(只需一次清空数组(for 循环)),天线会打开一次以执行 10 个请求,还是会打开并关了n次? (我正在使用 NSURLRequest)

有没有办法一次性批量发送请求?还是这基本上是“批量”发送请求。

【问题讨论】:

您可能需要检查 AFNetworking 并查看 this thread。 我知道 AFNetworking(并将其用于其他项目),但我们不需要那么重的东西,所以我们推出了自己的轻量级版本。 我确定它没有指定,并且(有些)可能会发生变化。当然,您始终可以将内容一起批处理到单个 HTTP 请求中(如果服务器可以处理它),而不是发送多个请求,并且在任何情况下批处理到单个请求中会更省电。 【参考方案1】:

文档没有说明 iDevice 的硬件如何处理多个NSURLRequests。一种型号或操作系统版本的处理可能与另一种型号或操作系统版本不同(例如 iPhone 4 与 iPhone 5)。

您必须使用仪器并使用能量诊断自行研究。然而,这相当简单。这是一个简短的计划:

    将设备连接到您的开发系统。 启动XcodeInstruments。 在设备上,选择Settings > Developer 并打开电源记录。 断开设备并执行所需的测试。 重新连接设备。 在Instruments 中,打开Energy Diagnostics 模板。 选择File > Import Energy Diagnostics from Device

另外,看看Analyzing CPU Usage in Your App

【讨论】:

【参考方案2】:

操作系统执行的能源优化不为公众所知。

特定接口的具体处理取决于接口,因此某些接口的设置/拆卸成本非常低(例如蓝牙 LE),而其他接口的运行成本非常低,但需要时间来设置和拆卸(例如 2G)。

您通常必须参加一门为操作系统提供可能最佳选项的课程,然后让它尽其所能。

我们可以说几句话。单个数据包的连接不太可能打开/关闭,因此当有数据要发送时连接将打开,并在您尝试接收时保持连接。操作系统在等待时可能能够以较低的功率运行,因为它不需要 ACK 数据包,但它无法完全关闭电源。

底线,如果您按顺序发送请求,我相信操作系统不太可能在请求之间循环电源,如果您并行发送它们,几乎肯定不会。

这是值得优化的吗?取决于你做了多少。

可能感兴趣:后台下载,当操作系统知道它将进行其他一些网络活动时,它会计算您的获取时间。

【讨论】:

以上是关于发送一批 http 请求时的天线使用情况的主要内容,如果未能解决你的问题,请参考以下文章

从 vuejs 客户端向 oauth/token 发送 POST 请求时的 401 响应

http跨域时的options请求

golang中发送http请求的几种常见情况

向 Http GCM 服务器发送帖子时的响应时间非常长

使用 RestTemplate 发送请求时的编码问题

jemterHTTP请求