【发布时间】:2013-12-31 09:43:24
【问题描述】:
有时我必须 AJAX 一个巨大的 JSON 有效负载 (~20MB)。在此过程中,浏览器窗口似乎在不断加载(最新的 Chrome、Windows 8.1)。用户可以单击诸如链接之类的东西,但在 AJAX 请求完成之前,浏览器实际上不会转到这些链接。这可能是一个问题,因为如果您转到需要此类 AJAX 调用的页面,则很难导航离开。不幸的是,此时我无法大幅减少有效负载的大小(我正在加载图表,有时图表有数十万个节点和边)。
知道为什么浏览器不会离开(即使浏览器是响应式的)?并且,如果可能的话,任何潜在的解决方案?谢谢!
【问题讨论】:
-
你有没有想过把你的 JSON 分成几块?您也可以考虑通过 BinaryJS 之类的东西进行流式传输,并使用允许“流式传输 JSON”的扩展之一,您可以在继续下载的同时访问已解析的 JSON 对象的元素。
-
你在使用同步ajax吗?如果是这样,停止这样做。
-
考虑:* 对 JSON 进行分块 * 当数据大于 X 时打开一个单独的页面进行上传 * 以更节省大小的格式上传?
-
是的,我考虑过这些事情。我更想知道是否有人知道它为什么会发生。因此,当在本地 ajax'ing 这么大的文件时,请求完成时会出现非常小的缓慢。在网络上,这种缓慢似乎被拉长了,这让我相信浏览器正在处理多个“请求”的有效负载,每个“请求”的开销都比我的本地机器更大。只是一个想法。
-
也许您可以选择尝试使用 g-zip 压缩返回的 JSON。如果它是可能的。或任何用于返回 JSON 的压缩系统。
标签: javascript ajax google-chrome