我的网站包含显示员工活动记录的图表。有数据层(即:地区 - >州 - >办公室 - >经理 - >员工 - >活动记录),每次点击图表时,它会向下钻取一个级别以显示更具体的信息。最高级别(区域)要求我将~1000个对象加载到数组中,最低级别为~500,000个对象。我使用以下命令通过JSON格式的文本文件填充图形:
$.ajax({url:'data/jsondata.txt', dataType: 'json',
success: function (data) {
largeArray = data.employeeRecords;
}
我是否可以使用替代方法而不会妨碍响应时间/性能?我想到我必须预先加载所有数据客户端,否则如果我需要在用户点击时获取它,则会有延迟时间。如果有人能指出我的最佳实践,甚至可能解释什么被认为是“太多”客户端数据,我会很感激。
仅供参考我仅限于使用旧的Web服务器,如果我想做任何服务器方面的事情,我将仅限于经典ASP,否则它必须是客户端。谢谢!
答案 0 :(得分:3)
如果您的服务器快速响应
在这种情况下,您可以简单地在用户点击时按需加载数据。服务器很快,所以为什么还要努力做到更聪明,没有收获。
如果服务器速度快但速度不够快,那么您可以在绘制第一个级别时预加载下一个级别。例如,如果你刚刚在“办公室”级别渲染图形,那么当用户仍然对屏幕更新作出反应时,静默地预加载“管理器”下一级数据。
如果服务器对按需数据的速度太慢
在这种情况下,您可能需要准确地模拟它的缓慢位置并解决该问题。这里有几件事情你的问题并没有说明。
浏览器可以处理500,000个对象吗?您应该能够只监视您正在使用的浏览器的内存,并且有关于此的选择是/否。将真正依赖或定位用户浏览器/硬件。
您可能希望查看此问题What is the most efficient way of sending data for a very large playlist over http?,因为它显示了另一种发送和处理数据的方式,我发现上面的步骤4更快。当然,在500k对象中你将无法再使用localStorage,但我一直在尝试下载数百万个数组元素,它可以正常工作。 (仍然是WIP)我不使用jquery,所以不确定这是否可用。
最佳做法?抱歉,这个问题无法解决。