按需更新许多Highcharts实例的最佳性能

时间:2013-09-24 09:00:21

标签: javascript loops highcharts coffeescript

我目前有一个包含一些Highcharts图形的页面,大约22个,并且它们受用户可选择的过滤器的限制。每个过滤器交互都会删除当前序列并添加新序列。

我从两种方法开始,第一种方法是通过一个循环遍历所有已保存的实例对象,删除每个系列,

while currentChart.series.length > 0
  currentChart.series[currentChart.series.length - 1].remove()

然后,在另一个遍历数组的循环之后搜索过滤器数据和

currentChart.addSeries
  name: operatorName
  data: data
  type: options.chartType

但实施结果相当沉重。

然后我实现了一个超时让插件稍微呼吸并且没有堆叠那么多,通过在每个循环之间设置1ms超时我获得了更好的性能并且可以看到动画但是它使它有点迟缓。设置更高的超时会使页面难以导航并且过滤器更改会堆叠,因为整个图形更新会花费很多时间。

2 个答案:

答案 0 :(得分:3)

根据我的经验,当我有大量的图表或数据点时,我通常会关闭动画。动画增加了大量的处理开销,没有它,高图通常可以很好地处理大量数据。

我猜你可以尝试删除系列并一次为每个图表添加新系列,而不是全部删除然后添加全部。我怀疑这会对你的页面响应性产生很大的不同。

  chart: {
      animation: false
  },
  plotOptions: {
        series: {
            animation: false
        }
  },

答案 1 :(得分:1)

while currentChart.series.length > 0
  currentChart.series[0].destroy()

ex:http://jsfiddle.net/5B9c7/1/