news 2025/12/20 0:53:00

性能优化之分块渲染

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
性能优化之分块渲染

在遇到大量数据需要渲染的时候,一次性渲染会阻塞主线程导致页面卡顿,可以用分块渲染提升页面性能,将大量DOM结点的渲染拆分为多个小任务,避免主线程长时间阻塞,减少页面卡顿。

<script setup lang="ts"> import { ref, onMounted } from 'vue' const tableData=ref<any[]>([]) const CHUNK_SIZE=100 const getData=async()=>{ try{ const res=await fetch('/api/mock') if(!res.ok) throw new Error(`请求失败${res.status}`) const data=await res.json() function* chunkGenerate(){ let index=0 while(index<data.length){ yield data.slice(index,index+CHUNK_SIZE) index+=CHUNK_SIZE } } const generator=chunkGenerate() const process=()=>{ const chunk=generator.next() if(!chunk.done){ tableData.value.push(...chunk.value) requestAnimationFrame(process) } } requestAnimationFrame(process) }catch(error){ console.log('error',error) } } getData() </script>

requestAnimationFrame是浏览器原生支持的API,浏览器的屏幕刷新率通常是60 帧 / 秒(FPS),也就是每≈16.67ms 会完成一次页面重绘(更新屏幕内容)。requestAnimationFrame(简称 RAF)的作用是:让你的回调函数,精准在 “下一次页面重绘之前” 执行,由浏览器统一调度,而非手动定时(比如setTimeout)。

为什么不能用setTimeout?

  • 处理数据的 JS(setTimeout 回调)在「渲染后」执行,处理完数据后,要等下一个 16.67ms 的渲染帧才能显示新数据;
  • 每批数据的渲染都被延迟至少 16.67ms,多批叠加后,肉眼会明显感觉到 “数据处理和画面更新不同步”,表现为 “掉帧、卡顿”;
  • 更糟的是:如果 setTimeout 的宏任务队列里有其他任务(比如用户点击回调),数据处理会被进一步推迟,渲染延迟更久。
requestAnimationFrame 的执行流程(同步无延迟)

RAF 的回调跳过宏 / 微任务队列,直接被渲染引擎调度到「渲染前」执行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/17 1:54:32

C++ 模板初阶:泛型编程的入门指南

在 C 编程中&#xff0c;我们经常会遇到这样的场景&#xff1a;需要实现功能完全相同&#xff0c;但处理数据类型不同的函数。比如交换两个整数、交换两个浮点数、交换两个字符的函数。最直接的想法是用函数重载&#xff0c;但这种方式的弊端显而易见 —— 代码复用率低、可维护…

作者头像 李华
网站建设 2025/12/20 0:02:31

基于Java实现优雅关闭的规范化方案设计与实现

文章目录前言背景初步调研实现思路方案核心需求分析技术方案对比实现思路初步功能设计关键设计决策实现步骤与代码第一步&#xff1a;核心关闭管理器实现第二步&#xff1a;集成到钉钉客户端管理器&#xff08;注册关闭&#xff09;总结说明资料获取前言 博主介绍&#xff1a;…

作者头像 李华
网站建设 2025/12/17 1:50:31

时序数据战场巅峰对决:金仓数据库 VS InfluxDB深度解析

引言 在物联网、工业互联网与运维监控领域&#xff0c;时序数据正以前所未有的速度迅猛增长。海量设备持续产生的数据流&#xff0c;对数据库提出了双重核心要求&#xff1a;既要支撑高速数据写入&#xff0c;又要实现快速复杂分析。长期以来&#xff0c;InfluxDB凭借时序领域的…

作者头像 李华
网站建设 2025/12/17 1:49:23

Windows任务管理器中CPU相关指标怎么看?

在Windows任务管理器中&#xff0c;CPU相关的指标是判断电脑性能和健康状况的核心。下面我为你详细拆解如何看懂它们&#xff0c;从最简单到最专业。 一、如何找到CPU指标&#xff1f; 打开任务管理器&#xff08;Ctrl Shift Esc&#xff09;。如果看到简化视图&#xff0…

作者头像 李华
网站建设 2025/12/17 1:48:13

【必藏】大模型入行晚了?现在就是黄金时机!小白到入门的完整路线

“现在学大模型还来得及吗&#xff1f;”最近在CSDN社区逛&#xff0c;总能刷到这类提问。我的答案永远是&#xff1a;种一棵树最好的时间是十年前&#xff0c;其次是现在——大模型领域尤其如此。 自ChatGPT引爆行业以来&#xff0c;AI大模型已经从“前沿概念”变成了企业刚需…

作者头像 李华
网站建设 2025/12/19 6:30:47

系统思考与认知习惯

我们常常低估一个事实&#xff1a;人并不是靠“思考能力”在行动&#xff0c;而是靠“认知惯性”在行动。绝大多数管理者在日常决策中&#xff0c;依赖的不是当下的理性分析&#xff0c;而是多年形成的自动反应系统&#xff0c;比如&#xff1a; 问题一出现&#xff0c;立刻找责…

作者头像 李华