海量数据处理方案
- 离线渲染技术,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帧