ajax请求浏览器限制

时间:2009-05-22 15:29:12

标签: javascript ajax json

要开始的更通用的问题。 ajax请求的响应大小是否有限制,如果它是JSON请求?

我通过JSON请求传递大量数据,并在FF3中遇到“脚本堆栈配额耗尽”消息。现在在FF2中,配额为4mb,但在FF3中为640kb。我想知道这是否是JSON特定的。普通的ajax请求是否有响应大小限制?一个可能由浏览器强加的?如果非JSON请求没有与脚本堆栈配额相同的问题,我如何对返回的数据进行分类? XML也许......我不确定我是否会在w3c规范的范围内使用我的数据。

5 个答案:

答案 0 :(得分:3)

iirc这是去年FF3上的一个错误,但我相信(是的,检查它here)它是固定的。不过看不起评论,有这样的说明:

  

注意:此测试取决于   架构和可用内存。上   具有2G和64位的x86_64机器   构建,它会失败   InternalError:脚本堆栈空间   但是在x86_64上配额已用完   有4G和64位构建它会   通过。

评论还认为这是一个纯粹的JS问题,这意味着虽然数据格式严格无关紧要,但是非常大的JSON块可能会破坏XML字符串可能不会的JS堆栈。我想你只需要尝试。

OTOH,它标记为固定,因此有一个问题,即确保你也使用最新版本的FF。

答案 1 :(得分:2)

我怀疑如果你发送和接收数据的限制是不同的,所以我将假设它是在向客户端发送数据。 JSON只是一种数据类型。你真正在做的是,怀疑是,正在对javascript脚本进行GET请求,该脚本应限制在合理的大小。 JSON的wiki也说使用XMLHTTPRequest方法,它可能会绕过你的限制,但你仍然需要一个代理来避免跨域脚本限制并使用更合理的mime类型,如html,xml,binary等。如果您在JSON中放置任何图像,请记住它们可以是链接,因为这些请求没有跨域问题。

请仔细检查,这不是导致您遇到麻烦的请求数量,浏览器也有限制。有时低至2。

答案 2 :(得分:2)

我认为annakata是对的。

错误消息的文本还表明问题是由于json结构的深度而发生的,而不是KB的大小。

这意味着当您评估json时,JavaScript引擎在解析json时使用堆栈。由于json结构中的深度(嵌套元素的数量),此堆栈达到了最大限制。

您可能想要检查一些更平坦的结构是否适合您的要求。

答案 3 :(得分:1)

作为一般规则,我试着保持我的AJAX数据很小。如果我必须传递大量数据,我将通过多次调用来检索它。因此,如果我正在加载一个表,我将有一个方法可以告诉我将返回多少记录,另一个方法是以#的组(通常为20个)返回记录。

关于这样做的好处是我可以在检索数据时加载页面,而用户不会等待一个大的有效负载。

此外,最好使用JSON而不是XML。 JSON通常是比XML更小的有效负载,并且许多测试表明浏览器更容易加载它。

答案 4 :(得分:1)

我没有遇到任何有形限制,但是您的用户交互性,将大数据分解为多个调用。大型表需要永远通过ajax传输,特别是如果用户正在运行IE。大数据+ Ajax + IE = IE崩溃。

相关问题