海量数据处理方案
- 离线渲染技术,PlanUml及Offline Canvas;
- 局部渲染技术,脏矩阵渲染;
- 双引擎切换,GPU渲染
多端渲染对接方案
- 语法编译,编译时思路;
- 运行时思路;
- 底层渲染指令思路
时间分片
- DocumentFragments是DOM节点,但并不是DOM树的一部分,
- 可以认为是存在内存中的,所以将子元素插入到文档片段时不会引起页面回流
- 时间分片的方式来同时加载大量简单DOM
- 复杂DOM的情况,一般会用到虚拟列表的方式来实现
//需要插入的容器let ul = document.getElementById('container')// 插入十万条数据let total = 100000;// 一次插入 2000 条let once = 2000;//总页数let page = total/once//每条记录的索引let index = 0;//循环加载数据function loop(curTotal,curIndex){if(curTotal <= 0){return false;}//每页多少条let pageCount = Math.min(curTotal , once);window.requestAnimationFrame(function(){let fragment = document.createDocumentFragment();for(let i = 0; i < pageCount; i++){let li = document.createElement('li');li.innerText = curIndex + i + ' : ' + ~~(Math.random() * total)fragment.appendChild(li)}ul.appendChild(fragment)loop(curTotal - pageCount,curIndex + pageCount)})}loop(total,index)
等比例采样
- js 数据等比例采样
- 后台返回 1万条数据,图表渲染3000条数据
- 用数据的长度 除以 3000,例如 10000/3000 = 3.4 ;每隔3个采集一个数据
- 从0开始,每隔3个 获取,3333条数据,再等比例获取(4800-3333=1467)1467帧
