jQuery或JavaScript-ajax-get方法的返回值的大小限制

Size limit for the return value of a jQuery or JavaScript ajax get method?

本文关键字:返回值 JavaScript-ajax-get 方法 jQuery      更新时间:2023-09-26

当我使用ajax GET方法时,返回值是否有大小限制?

如果是,这个限制是由于JavaScript/jQuery造成的吗?到浏览器?到服务器?

我看过一些旧的文章(5年以上),似乎表明有大小限制,但我找不到任何关于这个主题的最新信息。

是的,有一个限制。它取决于体系结构和可用内存。在具有2G和64位版本的x86_64计算机上,它将失败,并显示InternalError:脚本堆栈空间配额已用尽,但在具有4G和64位构建的x8_64上,它会通过。

因此,它最终取决于运行和托管脚本的机器来有效地为请求提供服务。

如果您收到InternalError Script Stack消息,则表示您需要升级硬件才能运行请求。

"控制"这种情况的方法是做所谓的"节流"。请参阅另一个堆栈以获取此方面的参考:如何对ajax请求进行评级限制?

HTTP协议不限制任何响应的大小,jQuery本身也不限制。因此,从理论上讲,您可以随心所欲地做出GET响应。

然而,在实践中,存在一些限制:web服务器可能具有最大响应大小(尤其是当您缓存整个响应时),服务器代码可能需要需要额外存储的中间处理步骤,客户端需要在处理响应数据之前将其存储在某个位置,浏览器上的javascript实现可能有额外的内存限制(你不希望一个流氓脚本吃掉你所有的物理RAM:这将是一个严重的安全问题)。然而,到底有多少太多很难确定:几兆字节可能可以,一兆字节肯定不行。

请注意,请求方法在这种情况下非常不感兴趣;上述问题对于POST请求或任何其他HTTP谓词的响应同样有效。