非常大的HTTP请求与许多小请求

时间:2010-06-29 06:36:17

标签: json client-server

我需要一个2D数组(如Json)从服务器发送到客户端。它的大小约为400x400,每个条目大约有4个字符的文本。这样就可以获得大约640KB的数据。

以下哪种极端方法更好?

  1. 我一次性对所有数据发出大量HTTP请求。
  2. 我发出400个请求 - 每个请求一行(大约1.6 KB)
  3. 我认为最佳方法可能介于中间。任何人都可以告诉我这个数据的最佳单一请求大小是什么?

    感谢。

3 个答案:

答案 0 :(得分:63)

选择一个大与几个小的考虑因素:

  • 在单一请求案例中,当数据到达时,您无法进行渐进式数据处理;您需要等待完整的数据包到达才能执行任何操作。如果它失败了,你需要从头开始一切。
  • 在多个请求案例中,您可以执行渐进式数据处理。但是,您现在必须考虑多个故障的可能性以及如何从这些故障中恢复。
  • 多个请求会为每个请求产生开销。这是您应用程序将消耗的额外带宽。
  • 某些HTTP代理限制了对同一服务器的并发请求数,您可能需要做一些逻辑来解决这个问题。
  • 响应压缩对单个请求案例更有效。
  • 多个请求不需要您为数据分配完整内存。当然,640KB不是那么大的内存,所以这可能不是你的一个重要考虑因素,这取决于你分配它的频率。
  • 如果提前终止流程(取消按钮或应用程序终止或浏览器导航离开您的页面),单个请求仍将完成完整的响应下载;但是,对于多个请求的情况,您的代码尚未启动的任何请求都不会被执行。

老实说,我不会那么担心最后两个并且我的选择基于1)渐进式数据处理很重要; 2)您的应用程序容差对于故障和部分数据是什么。

答案 1 :(得分:47)

除非您处理缓慢(非常慢于今天的标准)连接以及真正需要增量更新,否则请在一个请求中执行此操作。

这为compressing the response提供了更高的效率,并避免了extra HTTP requests and response headers的开销。

答案 2 :(得分:3)

您必须记住服务器可能有vulnerabilities with large requests