Json 如何将非常大的阵列发送到客户端浏览器?

Json 如何将非常大的阵列发送到客户端浏览器?,json,asp.net-mvc,Json,Asp.net Mvc,我的MVC应用程序中有一个非常大的数组(2000万个数字,一个sql查询的输出),我需要将它发送到客户端浏览器(它将使用webGL在地图上可视化,用户应该在本地处理数据)。发送数据的最佳方法是什么?(请不要认为这是个坏主意!我在寻找这个具体问题的答案,而不是其他建议) 这是我当前的代码(使用ajax调用),但当数组大小超过300万时,我会收到outofmemory异常。序列化(stringbuilder?)似乎失败了 List results=DomainModel.GetPoints(); J

我的MVC应用程序中有一个非常大的数组(2000万个数字,一个sql查询的输出),我需要将它发送到客户端浏览器(它将使用webGL在地图上可视化,用户应该在本地处理数据)。发送数据的最佳方法是什么?(请不要认为这是个坏主意!我在寻找这个具体问题的答案,而不是其他建议) 这是我当前的代码(使用ajax调用),但当数组大小超过300万时,我会收到outofmemory异常。序列化(stringbuilder?)似乎失败了

List results=DomainModel.GetPoints();
JsonResult=Json(results,JsonRequestBehavior.AllowGet);
result.MaxJsonLength=Int32.MaxValue;
返回结果;

我对web编程/javascript/MVC没有太多经验。过去24小时我一直在研究,但没有取得任何进展,因此我需要一个提示/示例代码来继续我的研究。

不,不,不,您没有向浏览器发送那么多信息:

  • 它会导致巨大的内存使用,很可能会使web浏览器崩溃(事实上,在您的情况下确实如此)
  • 检索它需要花费大量的时间,不是每个人都有良好的互联网连接,甚至良好的连接也会随着时间的推移而波动
  • 如果您正在构建一个地图工具,那么我建议您将地图拆分为分幅,并仅发送与用户当前正在处理的地图部分相对应的数据。此外,对于较大的缩放,您可以过滤掉数据,因为您肯定不能将其全部放在地图上


    编辑。另一种选择是要求用户使用至少16GB内存的机器,或者使用任何内存大小的机器来处理您的海量数据。

    我完全理解您的担忧,但此应用程序的用户具有非常好和可靠的internet访问,我不喜欢使用平铺,除非我观察到浏览器崩溃。关于我的实际问题有什么建议吗?请看我回答中的第1点,你确实观察到了崩溃,除非你只发送一段巨大的数据,否则你无法避免崩溃。或者,指导用户使用ram大于16GB的机器(或者任何ram大小都可以处理大量数据):)很可能与观察不同!我要求我的用户获得256GB的RAM,如果这能让我们开始讨论我的问题的答案。更新了我的答案,加入了这种RAM“方法”:@MattMan,我认为cristik试图说明的一点是,web浏览器一开始就不是这个应用程序的合适平台。要求用户拥有比大多数服务器更多的RAM是一个极端的系统要求。此外,它还要求用户拥有64位web浏览器(仍然不是无处不在的),这些浏览器针对此类需求进行了优化(我不知道有)。
    List<double> results = DomainModel.GetPoints();
    JsonResult result = Json(results, JsonRequestBehavior.AllowGet);
    result.MaxJsonLength = Int32.MaxValue;
    return result;