前段时间我一直在问自己以下问题,我已经搜索过,但我没有找到答案。
问题是。
使用 post 方法通过 ajax 发送数据的请求和响应的限制容量是多少?
前任:
HTML Ajax Controlador
(Dato1) ---> (Dato1) ---> (Dato1) Request
(Dato2) <--- (Dato2) <--- (Dato2) Response
ajax支持通过post发送Data1和Data2的最大容量是多少。
我感谢任何评论,问候!
从客户端和服务器的角度来看,POST 请求与任何其他类型的请求完全相同。GET、POST、PUT 或任何其他之间没有区别(可能文件上传除外,它的区别在于
Content-type
)。撇开客户端不谈,所有服务器都为任何类型的请求的最大发送大小设置了限制。简而言之:这取决于服务器的配置。
例如,根据Apache 文档,在此服务器上,您可以配置 0 到 2GB 之间的限制。
对于客户来说,根本没有限制。它会尝试发送数据,直到从服务器接收到某种错误。例如,在 AJAX 主题中,您发送的内容必须已经在内存中,因此不会出现问题。而且,对于uploads ,文件的大小在上传开始之前是已知的。
编辑
我不打算在这个答案中持续太久,但无论如何:-)
从技术上讲,请求(无论是何种类型,都无所谓)仅限于在客户端和服务器之间建立一个套接字(如果还没有的话)。
通过所述套接字,可以循环的信息是无限的,直到其中一方(客户端或服务器)关闭它。
现在,HTTP 建立了一个明确的协议,其中字节必须以什么顺序循环,以便双方相互理解。
一个典型的请求
POST
具有这种格式(不准确,但为了得到一个想法):代金券。正如我所说,没有理论限制,但有实际限制。由于流通的信息不是即时的,服务器必须将它存储在某个地方直到它完成,以便决定如何处理它。
这些决定并不总是需要所有数据:例如,中间代理只需要URL来决定要做什么。要重新传输其余数据,您可以使用一个小的内部缓冲区,但您不需要存储所有数据,因为您不会使用它,只需将其重新传输到其最终目的地。
这就是为什么某些数据具有与其他数据不同的限制的原因。如果请求的 URL 很长,则可能的中间代理无法处理该请求,因为它确实需要该特定数据来做出一个或另一个决定。让我们考虑一下处理能力降低且可用内存很少的小型设备。
现在,让我们考虑一下服务器。根据数据的类型(从
Content-Type
, 包含在标题中),可能需要在处理之前获取整个数据。不幸的是,对于我们心爱的服务器来说,要发送的数据可能非常大。正如我们之前所说,在处理它们之前,您必须等待它们全部拥有。 我们该怎么做呢 ?好吧,使用一个内存块,我们将在其中存储所有数据,因为我们收到它。
我们不能用另一种方式来做吗?例如,使用磁盘上的缓冲区,...
我们当然可以。但是......让我们考虑一下性能。如果对于每个请求,必须将不确定数量的字节写入磁盘,然后进行几次额外的读取来处理它,......那么对于每个客户端的每个请求......设备的性能几乎不会达到 10或 20 个同时连接。平静的一天。