javascript - Jquery Flot 缓慢并卡住 IE

标签 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?

非常感谢!

最佳答案

您看到“卡住”是因为 Flot(尚)不支持增量绘制;它在将控制权交还给浏览器之前渲染整个绘图。除了破解代码之外,没有其他办法解决这个问题,但是您可以做两件事来提供帮助:

  1. 您可能正在使用 Excanvas;尝试切换到Flashcanvas 。根据我的经验,它与 Flot 的效果一样好,并且提供了显着更好的性能。授权“专业”版本所需的 31 美元不会超出大多数预算。

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

但无论您做什么,您都无法在 IE8 上处理大型数据集时获得出色的性能。它是一款已有近四年历史的浏览器,在 JavaScript 性能大战之前发布,使用模拟 Canvas ;你只能做这么多。

关于javascript - Jquery Flot 缓慢并卡住 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607489/

相关文章:

jQuery UI Sortable - 禁止传输到子元素

python - Matplotlib 正在绘制两次图,但 plt.plot 只被调用一次?

matlab - 使绘图从 0 开始

javascript - Jquery 如何检查今天时间大于给定时间?

javascript - chrome api - 将选项卡移出窗口

jquery - 清除 Kendo 多重选择的选定值

jquery - 启动页面(不是我的想法)在进入网站的第一个实际页面之前使用 jQuery 淡入/淡出

python - Bokeh 中一个图中的多个图表

javascript - 如何使用鼠标中轮按钮拖动 Openseadragon Canvas

javascript - amCharts 多级深入分析