2014-09-29 56 views
0

我使用highcharts创建大型热图。它工作正常,但是当有大量记录生成热图时。在这种情况下,它会冻结broswer,并且broser会显示警报等待或结束页面。我在Stackoverflow上看到过其他一些答案,它建议将计算算法改为可以迭代调用的东西,然后使用timeout(),但是我不能在我的场景中使用它,我该如何让高轮渲染迭代?使用highcharts创建大型热图冻结浏览器

如何防止它冻结浏览器?

+0

你能提供演示吗? – Brewal 2014-09-29 12:21:50

+0

为什么你不能在你的场景中使用它? – 2014-09-29 12:27:26

+0

@Brewal:我正在尝试创建演示 – 2014-09-29 12:30:32

回答

1

Highcharts有很多循环来呈现数据,所以我发现的唯一可能性是减少了加载的数据量。加载10MB +(通常已经在3-4MB)的数据导致几乎每个浏览器都冻结。

我有一个类似的问题与大型数据集(15个数据点10个月系列的月份)。我在查看整个数据集时所做的是服务器端数据聚合(4小时平均值)。上变焦我通过Ajax,但只是为了与afterSetExtremes事件可视区域内的实际15分钟的数据点:

events: { 
    afterSetExtremes: 'function(event) { 
     if(typeof event.userMin == "undefined") 
      { var a={"min": null, "max": null}; } 
     else 
      { var a={"min": event.min, "max": event.max}; } 
     $.ajax({url:"/user/analyze/intval", method: "POST", 
      data: a, dataType: "json"}).success(function(json) 
      { //update series here }' 
} 

我使用typeof事件,以确定是否使用了变焦复位(再得到初步汇总数据)

我觉得类似的东西也应该可以解决你的问题。问问你自己,这有助于获得这么多的数据吗?即使原始数据被严重聚合(因子4-6),通常可见差异也接近于零。