移动:一个请求还是多个较小的请求?

时间:2011-07-01 13:58:49

标签: iphone web-services mobile client-server

在经常需要向Web服务发送请求的iPhone应用程序(或一般移动设备)上,最好是处理一个请求,这些请求将为每个请求获取大量数据或多个(可能是同时的)请求获取较少数据量的元素。

实施例

我想加载节点中的元素列表。我有节点的ID。我可以获取元素的两种方法如下:

  • 使用节点ID发送单个请求,并在单个响应中获取有关节点中n个第一个元素的所有信息;
  • 发送带有节点ID的第一个请求,以获取节点中n个第一个元素的ID,然后为每个请求发送另一个请求,使每个元素有一个响应。

我在这方面保持平衡。

  • 由于移动互联网连接非常不稳定和缓慢,重量级单一响应可能会导致更多滞后和超时;
  • 手机可能无法同时处理太多响应。

你有什么看法?

5 个答案:

答案 0 :(得分:5)

由于每个请求都有开销,因此一个大请求通常比几个相同大小的小请求更快。这也适用于高速网络,但在移动网络中,传输速度和延迟之间的比例甚至更大。

答案 1 :(得分:1)

我认为手机处理响应时不会有任何问题,因此对于大型请求/答案,多个请求方法似乎更好。但是,根据请求/响应的大小,在单个请求中执行此操作实际上可能会更快,以减少与多个请求相关的延迟。单个请求方法还需要传输比多个请求方法稍少的数据。

答案 2 :(得分:1)

每个呼叫都有其开销(即网络负载),连接数也可能有限。

您可能会或可能无法在下载期间更新您的用户界面,具体取决于您的回调被调用的频率 - 您可以在到达时处理部分数据。

如果您的数据易于压缩(通常是文本数据),那么使用单个呼叫甚至可能会减少您的总网络使用量。

如果数据块很大,我会选择几个单独的数据。这也将使网络错误更容易。对我来说,最重要的是获得正确的平衡 - 使数据包的大小合理,不要淹没服务器。

答案 3 :(得分:0)

这取决于具体情况。如果您不想让用户在整个应用程序中每次都等待,那么您可以使用单个请求一次加载所有数据。

如果您不介意让用户等待,那么您可以按需使用多个请求。例如,如果您只想在tableview中显示标题,并在用户点击任何标题时显示详细信息。所以你可以先获得标题,然后当用户点击时你可以通过ID获得该标题的详细信息。所以这只是按需请求的好方法。

答案 4 :(得分:0)

有时这种情况仅适用于某个类别的单个请求。假设你有一个Twitter应用程序,推文分为几类。拥有应用程序但只关心体育运动的人可能只看一个可能是单个ajax呼叫的体育部分。另一个用户可能只有15个类别中的两个类别。这意味着用户无需加载不必要的数据。您需要确定的重要事项是这一点。

是否需要同时加载所有数据才能使应用正常运行,并且您的用户通常会首先想要所有这些数据。