如何将非常大的数组发送到客户端浏览器?

时间:2015-05-10 08:33:53

标签: json asp.net-mvc

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

List<double> results = DomainModel.GetPoints();
JsonResult result = Json(results, JsonRequestBehavior.AllowGet);
result.MaxJsonLength = Int32.MaxValue;
return result;

我对网络编程/ javascript / MVC没有多少经验。我一直在研究过去24小时,但没有得到任何结果,所以我需要一个提示/示例代码来继续我的研究。

1 个答案:

答案 0 :(得分:2)

NO,NO,NO ,您不会向浏览器发送那么多信息:

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

    编辑。另一种选择是让您的用户使用至少具有16GB RAM的机器,或者处理大量数据所需的任何RAM大小。)