2012-01-20 54 views
28

我正在用JavaScript/jquery编写一些自定义控件来创建树。响应浏览器的最大json大小

为了创建树,我们提供了json对象作为java-script的输入来迭代并创建树。

由于数据量可能会增加到25K个节点。在基本的负载测试中,我们发现浏览器会因为这种音量而崩溃。

备用解决方案只是通过AJAX请求加载节点的第一级和按需加载。第一层的容量可以变化多达500-1K节点。

json作为服务器响应的最大大小是多少?在浏览器上处理大量数据的最佳方法是什么?

+0

没有大小限制,我已经处理了需要5秒完成的Ajax请求。 – riship89

+1

@ hrishikeshp19我也有,而且也只有500字节的数据值...什么是大小限制与您的时间量化有关? – Jeach

+0

我一直认为有限制...所以我运行了一个非常简单的Ajax循环,我将发送一个PHP请求/ Apache脚本的一个URL请求(它将它发送回来),在每个循环中增加'数据有效载荷'一个字符。当我的数据大小达到'8097字节'时,我收到了来自服务器的“414(Request-URI Too Large)”消息。如果你是Google的话,你可以查看更多关于414错误的详细信息......这是维基页面:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes – Jeach

回答

13

没有http响应的最大大小限制(或Int的最大大小或浏览器的限制或服务器的限制已配置)。

最好的方法是使用AJAX在需要显示的时候加载部分数据。

+8

在某些浏览器中,取决于Json将如何评估。如果浏览器有限制,移动Safari浏览器将不会评估()json,如果它大于10 MB –

+0

@ckuetbach这是正确的。 – xdazz

+1

也可能值得注意的是[服务器可以有最大尺寸](http://forums.asp.net/t/1090853.aspx/1)。 – ruffin

7

HTTP响应没有大小限制。 JSON即将作为HTTP响应。所以它也没有大小限制。

如果从JSON响应中分析的对象消耗太多内存,则可能存在问题。它会使浏览器崩溃。因此,最好使用不同的数据大小进行测试,并检查您的应用程序是否正常工作。

我认为延迟加载是如此大量数据的最佳方法。特别是在处理对象文字时。

请参阅High Performance Ajax Application来自雅虎的演示文稿。

3

嗯,我想我已经太晚了,不能给我两分钱。补充shiplu.mokadd.im的答案浏览器内存是一个限制,HTTP响应可以根据TCP规范具有任意数量的数据。

但是我有一个应用程序使用Google Chrome(29.0.xx版)和Jetty服务器,Jetty服务器的响应有效负载为335MB。虽然浏览器正在收到Chrome浏览器停止播放“IPC消息太大”的响应。虽然这是Google Chrome专用(不确定其他浏览器),但最大响应大小应该有一个阈值。