Jquery Flot Slow&冻结IE

时间:2012-09-26 17:48:10

标签: javascript jquery plot flot

我目前必须在8000 - 32000点附近绘图(4行* 8000点)我通过JSON请求获取我的数据,并且实际上数据在不到一秒的时间内返回给我。然而,每当我到达$ .plot点时,它就会冻结IE8,并且需要永远加载那么多点。这是我的代码:

var data = [];

        function onDataReceived(seriesData) {
            var p = $.plot(placeholder, seriesData.seriesData, options);
        }
        $.ajax({
            url: '/Charts/LineChart?DataTypesToGraph=' + dataTypes + '&DatePull=' + chartDate + '&AssetID=' + $('#AssetID').val(),
            method: 'GET',
            async: true,
            cache: true,
            dataType: 'json',
            success: onDataReceived
        });

如何加快我的$ .plot速度,使其加载速度更快。还有一种方法可以做到这一点,所以它不会冻结IE8吗?

非常感谢!

1 个答案:

答案 0 :(得分:4)

你看到'冻结',因为Flot不支持增量绘图;它会在将控制权交还给浏览器之前呈现整个绘图。除了黑客攻击代码之外没有别的办法,但是你可以做两件事来帮助:

  1. 你可能正在使用Excanvas;尝试切换到Flashcanvas。根据我的经验,它与Flot的效果相同,并且可以提供更好的性能。许可'pro'版本所需的31美元不会打破大部分预算。

  2. 每行有8000个点,大多数显示最大宽度为1920像素,平均值更像是1280.如果你显示整行,没有某种缩放/平移,那么你'渲染数据的数量是屏幕上实际可见数量的4-6倍。一些服务器端过滤/聚合将点数降低到2k将大大提高性能。

  3. 但无论你做什么,你都无法在拥有大型数据集的IE8上获得出色的表现。这是一款差不多有四年历史的浏览器,在JavaScript性能大战之前发布,使用模拟画布;你只能这么做。