Json 非常大的HTTP请求与许多小请求相比

Json 非常大的HTTP请求与许多小请求相比,json,client-server,Json,Client Server,我需要一个2D数组(作为Json)从服务器发送到客户端。它的大小大约为400x400,每个条目大约有4个字符的文本。因此,它的数据量大约为640KB 以下哪种极端方法更好 我一次性对所有数据发出一个大型HTTP请求 我发出400个请求-每个请求一行(大约1.6KB) 我相信最佳的方法是在中间的某个地方。谁能告诉我这个数据的最佳单个请求大小是多少 谢谢。除非您处理的是慢速(按照今天的标准非常慢速)连接,并且确实需要增量更新,否则请在一次请求中完成 这为您提供了更好的效率,并避免了。选择一个大的与几

我需要一个2D数组(作为Json)从服务器发送到客户端。它的大小大约为400x400,每个条目大约有4个字符的文本。因此,它的数据量大约为640KB

以下哪种极端方法更好

  • 我一次性对所有数据发出一个大型HTTP请求
  • 我发出400个请求-每个请求一行(大约1.6KB)
  • 我相信最佳的方法是在中间的某个地方。谁能告诉我这个数据的最佳单个请求大小是多少


    谢谢。

    除非您处理的是慢速(按照今天的标准非常慢速)连接,并且确实需要增量更新,否则请在一次请求中完成


    这为您提供了更好的效率,并避免了。

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

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

    老实说,我不会那么担心最后两个问题,我的选择基于1)渐进式数据处理是否重要;2)你的应用程序对故障和部分数据的容忍度是多少。

    你必须记住,服务器可能有

    +1-您可以避免往返的开销。即使在20毫秒。。。。400个请求将使8000ms开销=8秒。在80毫秒时。。。(在很远的地方),这将浪费32秒。非常感谢大卫和汤姆。那真的很有用好吧,@TomTom你没有考虑并行请求。。。!如果对并发连接没有限制,那么在完美连接的开始和结束时只有20毫秒:)纠正我如果我错了,它只需要400倍(处理头所需的时间),而不是400倍RTT@ZekeDran-浏览器对并发连接的数量施加限制。假设是6个,最终值减少6倍,接近1.33秒;因此,如果没有渐进式处理,这1.33秒仍然是一种浪费+1,我发现这是一个更好的答案比目前接受的一个这样的情况,因为它提供了一个很好的比较这两个选项,而不是直接的答案。缓存的单个请求意味着任何更改都会导致另一个大请求。拆分为多个请求,任何更改只需再次下载该块。