Performance HighChart让navigator处理动态数据

Performance HighChart让navigator处理动态数据,performance,firefox,dynamic-data,highstock,webpage-rendering,Performance,Firefox,Dynamic Data,Highstock,Webpage Rendering,我正在尝试一个比特币的实时图表,它可以长期运行,有两个数据集使用HighStocks进行买卖。问题是数据都是实时的,所以图表开始时没有数据,每30秒更新一次,在这种情况下HighStocks似乎并不总是很好 我已经创建了一个非常接近最终代码的演示!增量设置为1秒以加快演示,如果将AdaptToUpdateData更改为true,则会产生显著的滞后效应,直到最低导航器间隔超过30秒,因此请小心 我希望navigator区域正常工作,但如果我让它使用AdapteUpdateData进行更新:true

我正在尝试一个比特币的实时图表,它可以长期运行,有两个数据集使用HighStocks进行买卖。问题是数据都是实时的,所以图表开始时没有数据,每30秒更新一次,在这种情况下HighStocks似乎并不总是很好

我已经创建了一个非常接近最终代码的演示!增量设置为1秒以加快演示,如果将AdaptToUpdateData更改为true,则会产生显著的滞后效应,直到最低导航器间隔超过30秒,因此请小心

我希望navigator区域正常工作,但如果我让它使用AdapteUpdateData进行更新:true 在很短的时间内,图形非常滞后,我不能让它运行几个小时,而整个浏览器都开始不响应并出现脚本延迟错误

这对我来说很奇怪,例如,以30秒为增量运行8小时只需要960个数据点,不足以使用看起来那么多的处理和内存

如果AdapteUpdateData为false,则图形速度更快,更新流处于ok状态,直到使用其中一个导航按钮,则图形不再是“活动”的,因为新更新超出范围,而且导航器从1970年开始,而不是从系列数据开始

有人知道一种触发导航器刷新的方法吗?或者,当我添加一个新的数据点时,我可以调用这种方法来保持导航器区域的更新,并使图形保持在最新的数据输入点,并且不会阻止页面及时呈现?或者使用api或数据的更好方法

希望这是有道理的 这张图的整个想法是保持运行数天,可能数周,以便随着数据的进展实时查看数据,我不能使用HighStocks提供的处理大型数据集示例代码,因为数据都是实时的,更不用说我不是真的在处理大型数据集,只是不断缓慢的更新

$(function() 
{
    var curTime = $.now();
    var chart = new Highcharts.StockChart({
    chart: {
        renderTo: 'chartContainer',
        zoomType: 'x',
        turboThreshold:100,
        marker: {
            enabled: false,
            states: {
                hover: {
                    enabled: true,
                    radius: 5
                }
            }
        },
        shadow: false
    },
    rangeSelector: {
            buttons: [{
                count: 30,
                type: 'second',
                text: '30S'
            },{
                count: 5,
                type: 'minute',
                text: '5M'
            },{
                count: 30,
                type: 'minute',
                text: '30M'
            },{
                count: 60,
                type: 'minute',
                text: '1H'
            },{
                count: 360,
                type: 'minute',
                text: '6H'
            },{
                count: 720,
                type: 'minute',
                text: '12H'
            },{
                count: 1,
                type: 'day',
                text: '1D'
            },{
                type: 'all',
                text: 'All'
            }],
            inputEnabled: false
        },
        scrollbar: {
            liveRedraw: false
        },          
        title : {
            text : 'Live Bitcoin Data'
        },          
        exporting: {
            enabled: true
        },  
        navigation: {
            buttonOptions: {
                theme: {
                    'stroke-width': 1,
                    stroke: 'silver',
                    r: 0,
                    states: {
                        hover: {
                            fill: '#bada55'
                        },
                        select: {
                            stroke: '#039',
                            fill: '#bada55'
                        }
                    }
                }
            }
        },
        navigator : {
            adaptToUpdatedData: false
        },          
        yAxis: {
            title: {
                text: 'Price'
            }
        },
        xAxis: {
            type: 'datetime'
        },
        credits: {
            enabled: false
        },
        series: [{
            name: 'Sell',
                color: '#00FF00',
                pointStart: $.now(), 
                data : [],
                tooltip: {
                    pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>',
                    valueDecimals: 3,
                    valuePrefix:"$"
                }
            },{
                name: 'Buy',
                color: '#FF00FF',
                pointStart: $.now(), 
                data : [],
                tooltip: {
                    pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>',
                    valueDecimals: 3,
                    valuePrefix:"$"
                }
        }]
    });

    setInterval(function() {
        var chart = $('#chartContainer').highcharts();
        var exchangeSellRate = Math.floor(Math.random()*30)+40;
        var exchangeBuyRate = Math.floor(Math.random()*30)+40;
        var x = $.now(); 
        chart.series[0].addPoint([x,exchangeSellRate],false,false);
        chart.series[1].addPoint([x,exchangeBuyRate],true,false);       
    }, 1000);
});

关于挂起图表的问题,报告。感谢您发布该链接,希望他们能够解决解决大多数导航器问题,但我也遇到了AdapteUpdateData:false的同样问题。它只是需要更长的时间才能显现出来。目前,每8-12小时,我必须刷新浏览器,因为它成为laggy使用超过这一点。我希望有人对动态图和解决方案有一定的经验,除非这个库天生就是动态数据滞后的