响应浏览器的最大 json 大小
Posted
技术标签:
【中文标题】响应浏览器的最大 json 大小【英文标题】:Maximum json size for response to the browser 【发布时间】:2012-01-20 06:21:58 【问题描述】:我正在使用 javascript/jquery 准备的一些自定义控件创建树。
为了创建树,我们提供 json 对象作为 java-script 的输入以迭代并创建树。
由于数据量可能高达 25K 节点。在基本负载测试期间,我们发现浏览器会因为这样的卷而崩溃。
替代解决方案只是加载第一级节点并通过 AJAX 请求按需加载。第一级的体积可以变化多达 500 - 1K 个节点。
json 作为服务器响应的最大大小是多少。在浏览器上处理如此大量数据的最佳方法是什么。
【问题讨论】:
没有大小限制,我处理的 Ajax 请求需要 5 秒才能完成。 @hrishikeshp19 我也是,而且只有 500 字节的数据......大小限制与您的时间量化有什么关系? 我一直认为有限制...所以我运行了一个非常简单的 Ajax 循环,在其中我将向 php/Apache 脚本发送一个 URL 请求(它立即发送回来),增加“数据负载” ' 每个循环一个字符。当我的数据大小达到“8097 字节”时,我收到了来自服务器的“414 (Request-URI Too Large)”消息。如果你用谷歌搜索,你可以查看更多关于 414 错误的详细信息……这是 Wiki 页面:en.wikipedia.org/wiki/List_of_HTTP_status_codes 请注意,我上面的评论是针对 GET 请求的......现在才意识到问题是特定于对浏览器的响应。 这篇博文How Big is TOO BIG for JSON 可能是相关的。它显示了在各种浏览器中加载 JSON 的测试结果。 【参考方案1】:http响应没有最大大小限制(或者Int的最大大小或浏览器的限制或服务器的限制已配置)。
最好的方法是在需要显示时使用 AJAX 加载部分数据。
【讨论】:
在某些浏览器中存在最大尺寸,这取决于 Json 的评估方式。如果 json 大于 10 MB,移动 Safari 将不会 eval() 同样值得注意的是servers can have max sizes。 @ChristianKuetbach 你知道 10 MB 限制的参考吗?我想我正在反对它。谢谢! 我需要在计算中使用完整的 json 数据,所以不能使用 ajax 加载部分数据和加载所有数据一起崩溃浏览器,有人可以帮忙吗?【参考方案2】:HTTP 响应没有大小限制。 JSON 以 HTTP 响应的形式出现。所以它也没有大小限制。
如果从 JSON 响应中解析的对象占用过多内存,则可能会出现问题。它会使浏览器崩溃。因此,您最好使用不同的数据大小进行测试并检查您的应用是否正常运行。
我认为 延迟加载 是处理如此大量数据的最佳方法。尤其是在处理对象字面量时。
查看来自 Yahoo 的 High Performance Ajax Application 演示文稿。
【讨论】:
【参考方案3】:好吧,我想我给我的两分钱已经太晚了。补充 shiplu.mokadd.im 的答案浏览器内存是一个限制,根据 TCP 规范,HTTP 响应可以包含任意数量的数据。
但我有一个使用 Google Chrome(版本 29.0.xx)和 Jetty 服务器的应用程序,其中来自 Jetty 服务器的响应的有效负载为 335MB。当浏览器接收到如此庞大的响应时,Chrome 会停止留下“IPC 消息太大”的消息。虽然这是特定于谷歌浏览器的(不确定其他浏览器),但响应的最大大小应该有一个阈值。
【讨论】:
【参考方案4】:没有最大大小限制,但大小取决于客户端系统(浏览器所在的系统)的 RAM、CPU、网络带宽来解析大型 json 数据。如果系统低端且 json 数据较大,则浏览器会挂起。
【讨论】:
以上是关于响应浏览器的最大 json 大小的主要内容,如果未能解决你的问题,请参考以下文章
使用 thymeleaf 在浏览器中打印 Spring Boot JSON RESTful 响应