替代通过JSON文件创建大型客户端Javascript对象数组?

时间:2013-07-07 04:56:09

标签: javascript json object optimization graph

我的网站包含显示员工活动记录的图表。有数据层(即:地区 - >州 - >办公室 - >经理 - >员工 - >活动记录),每次点击图表时,它会向下钻取一个级别以显示更具体的信息。最高级别(区域)要求我将~1000个对象加载到数组中,最低级别为~500,000个对象。我使用以下命令通过JSON格式的文本文件填充图形:

$.ajax({url:'data/jsondata.txt', dataType: 'json',
        success: function (data) {
        largeArray = data.employeeRecords;
}

我是否可以使用替代方法而不会妨碍响应时间/性能?我想到我必须预先加载所有数据客户端,否则如果我需要在用户点击时获取它,则会有延迟时间。如果有人能指出我的最佳实践,甚至可能解释什么被认为是“太多”客户端数据,我会很感激。

仅供参考我仅限于使用旧的Web服务器,如果我想做任何服务器方面的事情,我将仅限于经典ASP,否则它必须是客户端。谢谢!

1 个答案:

答案 0 :(得分:3)

如果您的服务器快速响应

在这种情况下,您可以简单地在用户点击时按需加载数据。服务器很快,所以为什么还要努力做到更聪明,没有收获。

如果服务器速度快但速度不够快,那么您可以在绘制第一个级别时预加载下一个级别。例如,如果你刚刚在“办公室”级别渲染图形,那么当用户仍然对屏幕更新作出反应时,静默地预加载“管理器”下一级数据。

如果服务器对按需数据的速度太慢

在这种情况下,您可能需要准确地模拟它的缓慢位置并解决该问题。这里有几件事情你的问题并没有说明。

  1. 如果是,则服务器查询数据库的速度很慢。你可以做客户端来解决这个问题。
  2. 服务器包装传输速度慢吗?难以修复,服务器足够大?
  3. 网络传输速度慢?嗯,需要发送更少的数据或让用户获得更快的带宽。
  4. 浏览器解压缩时间慢? (即在脚本可以绘制图表之前延迟解码数据)。更改打包数据的方式,或发送更少的数据,例如块。
  5. 浏览器可以处理500,000个对象吗?您应该能够只监视您正在使用的浏览器的内存,并且有关于此的选择是/否。将真正依赖或定位用户浏览器/硬件。

    您可能希望查看此问题What is the most efficient way of sending data for a very large playlist over http?,因为它显示了另一种发送和处理数据的方式,我发现上面的步骤4更快。当然,在500k对象中你将无法再使用localStorage,但我一直在尝试下载数百万个数组元素,它可以正常工作。 (仍然是WIP)我不使用jquery,所以不确定这是否可用。

    最佳做法?抱歉,这个问题无法解决。