2012-02-09 67 views
2

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

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

我已经看过似乎表明存在大小限制的较早的文章(5岁以上),但我无法找到有关此主题的任何最新信息。

+1

据我所知,有一个请求大小的限制。也就是说,有些浏览器不允许调用超过2K字符的URL ...但对于我不确定的响应,它对我来说真的会感到惊讶...... – 2012-02-09 21:17:05

回答

1

HTTP协议不会限制任何响应的大小,jQuery本身也不会。所以从理论上讲,你可以让你的GET响应尽可能大。

然而在实践中,有一些限制:Web服务器可能有一个最大响应大小(特别是当你的缓存整个响应),服务器的代码可能需要需要额外的存储中间处理步骤中,客户端需要在处理响应数据之前在某处存储响应数据,浏览器上的JavaScript实现可能会有额外的内存限制(您不希望流氓脚本耗尽所有物理内存:这将是一个严重的安全问题)。然而,确切地说,太多的东西很难确定:几兆字节可能是好的,一兆兆字节当然不是。

请注意,请求方法在这种情况下是相当无趣的;上述问题对POST请求或任何其他HTTP动词的响应同样有效。

3

是的,是有限制的。它依赖于架构和可用内存。在具有2G和64位版本的x86_64机器上,它会因InternalError而失败:但是,脚本堆栈空间配额已耗尽,但在使用4G和64位版本的x86_64上会通过。

因此,它最终取决于正在运行和托管脚本的计算机,以便高效地服务请求。

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

“控制”这种做法是做什么所谓的“节流”。请参阅另一堆栈以供参考: How to rate-limit ajax requests?