虽然我查看了此处和其他来源,但我似乎无法完全找到在 javascript 中使用 XMLHttpRequest 加载更大的 JSON(从文件)的问题。我从 C# 应用程序生成此 JSON 文件,并且从未遇到过任何无效 json 的问题。较小的文件(1mb - 100mb)加载效果很好。最近,一位用户告诉我,他们无法加载文件 (295.8mb),并且收到了allocation size overflow
在火狐浏览器中。
我用一个小脚本对此进行了测试,可以在此处找到:https://jsfiddle.net/fraguada/6k0k698g/
我在本地运行此文件,并且可以毫无问题地加载较小的文件,而 Firefox 中的此文件会出现以下错误(jsfiddle 中的第 8 行)
allocation size overflow
callback(xobj.responseText);
在 Chrome 中我得到了一个不同的错误:
Uncaught SyntaxError: Unexpected end of input
(anonymous function) @ index.html:23
xobj.onreadystatechange @ index.html:37
这里,index.html:23 指的是 js fiddle 的第 21 行(JSON.parse(response)
)第 37 行引用了 jsfiddle 中的第 8 行(callback(xobj.responseText);
).
我试过了oboe.js(顺便说一下,非常好),但是等待一段时间(3分钟)后,加载停止(如 Chrome 开发工具所示),然后我点击了.fail
双簧管回调。
那么,是否可以使用 XMLHttpRequest 加载此类文件?如果没有,有哪些替代方案可以做到这一点?我的用户在本地和网络上使用我的应用程序。虽然我没有计划使用这么大的 json 文件,但我也不知道加载这样的文件会有任何限制(除了可用的内存和带宽)。
编辑:也许最好问:
- 什么限制了 XMLHttpRequest 可以加载的数据量?是浏览器堆吗?是客户端上的 RAM 量吗?是 XMLHttpRequest 对象吗?