当前位置: 首页 > 知识库问答 >
问题:

性能优化 - 前端如何绘制能容纳亿级别的折线图?

巫马浩言
2024-08-05

前端如何绘制能容纳亿级别的折线图?
项目需要绘制一个折线图,这个折线图要容纳亿级数据量,并且是实时更新的,就是这个统计图一直在绘画,每秒都在更新,然后并且能支持查看很久之前的统计图,比如说我点到之前的某个点,这个点就会放大,以前的数据不删除。

已经使用的方式是highcharts,引入,

import Boost from "highcharts/modules/boost.js";
import highstock from 'highcharts/modules/stock.js'
highstock(Highcharts)
Boost(Highcharts);

实时更新是使用

series.addPoint([x, y], true, false, false);

数据是批量过来的,通过websocked, highcharts好像没有addPoints这种方法只能单个点加载
这样的话,历史数据加载百万级是没有问题的,但是实时渲染到几千个点就不行了,只能坚持几分钟浏览器已经卡的不能动了,
要求是能看最近几天的数据

现在的难点在于如何实时更新,这个统计图数据量很大的这种

共有3个答案

杨波娃
2024-08-05

1.highcharts默认开启数据聚合(plotOptions.series.dataGrouping.enabled = true),在开启dataGrouping的情况下,折线图上展示的数据就是采样数据。
2.highcharts line图 支持scrollbar,可以实现图的缩放(印象里highcharts不支持点击放大)。

dataGrouping + scrollbar应该能够满足题主的需求。单图的点上亿,这个数据量highcharts性能能不能支持,这个不确定。如果highcharts支持不了,建议改交互,把时间区间分开,在数据层面实现大量数据的拆分。

庄元龙
2024-08-05

应该是前后拖动的时候,动态修改数据项吧?
不知道dataZoom跟你的需求对不对得上。

丁茂
2024-08-05

看得见的部分用采样技术减小数据量,看不见的部分用类似虚拟列表的技术隐藏。数据保存可以用数据库(IndexDB)

参考:后端一次传过来2000万条数据,前端怎么处理?

 类似资料:
  • 我开始写前端应用的时候,并不知道一个 Web 应用需要优化那么多的东西。编写应用的时候,运行在本地的机器上,没有网络问题,也没有多少的性能问题。可当我把自己写的博客部署到服务器上时,我才发现原来我的应用在生产环境上这么脆弱。 我的第一个真正意义上的 Web 应用——开发完应用,并可供全世界访问,是我的博客。它运行在一个共享 256 M 内存的 VPS 服务器上,并且服务器是在国外,受限于网络没有备

  • JIT与GC优化 > untyped(无类型)。 JAVASCRIPT是个无类型的语言,这导致了如x=y+z这种表达式可以有很多含义。 y,z是数字,则+表示加法。 y,z是字符串,则+表示字符串连接。 而JS引擎内部则使用“细粒度”的类型,比如: 32-bit* integer。 64-bit* floating-point。 这就要求js类型-js引擎类型,需要做“boxed/unboxed(

  • 本文向大家介绍前后端性能如何调优?相关面试题,主要包含被问及前后端性能如何调优?时的应答技巧和注意事项,需要的朋友参考一下 减少http请求数 使用内容分布式网络 给头部添加一个失效期或者Cache一Control Gzip压缩组件 把样式表放在前面 把脚本放在最后 不使用CSS表达式 使用外部的JavaScript和CSS 减少DNS的查询 缩小JavaScript和CSS

  • A curated list of Web Performance Optimization. Everyone can contribute here! Categories :memo: Articles :newspaper: Blogs :books: Books :book: Docs :movie_camera: Talks Tools Analyzers Analyzers API

  • 本文向大家介绍js如何性能优化?相关面试题,主要包含被问及js如何性能优化?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 减少HTTP请求 使用内容发布网络(CDN) 添加本地缓存 压缩资源文件 将CSS样式表放在顶部,把javascript放在底部(浏览器的运行机制决定) 避免使用CSS表达式 减少DNS查询 使用外部javascript和CSS 避免重定向 图片lazyLoad  

  • 本文向大家介绍如何做 MySQL 的性能优化?相关面试题,主要包含被问及如何做 MySQL 的性能优化?时的应答技巧和注意事项,需要的朋友参考一下 为搜索字段创建索引。 避免使用 select *,列出需要查询的字段。 垂直分割分表。 选择正确的存储引擎。

  • 有许多因素影响你的 Web 应用程序的性能。有些是环境, 有些是你的代码,而其他一些与 Yii 本身有关。 在本节中,我们将列举这些因素并解释如何通过调整这些因素来提高应用程序的性能。 优化你的 PHP 环境 一个好的 PHP 环境是非常重要的。为了得到最大的性能, 使用最新稳定版本的 PHP。 PHP 的主要版本可能带来显著的性能提升。 启用字节码缓存 Opcache(PHP 5.5或更高版本)