
为什么我的render渲染速度这么慢?这里有提速秘诀 最近一直在搞前端渲染这块,脑袋都要炸了。以前觉得这玩意儿,浏览器都给你搞定了,我们写代码的操心结果项目跑起来一看,...
为什么我的render渲染速度这么慢?这里有提速秘诀
最近一直在搞前端渲染这块,脑袋都要炸了。以前觉得这玩意儿,浏览器都给你搞定了,我们写代码的操心结果项目跑起来一看,卡得不行,用户体验贼差。我赶紧扎进去研究了一圈,发现渲染慢真不是浏览器的问题,主要是我们自己搞事情。
我先从最简单的排查开始。我把页面拆开来看,最开始怀疑是DOM结构太复杂了。你想,一层套一层,几百个元素堆在一起,浏览器光是计算这些元素的布局就得转半天圈。
结构优化了一波后,感觉好像快了那么一点点,但核心问题还在。接着我就盯上了样式(Style)。样式写得烂,浏览器计算起来就得费劲。

我发现很多样式都是全局的,特别是那种用了ID选择器或者通配符()的。这些东西一旦触发,浏览器就要回溯查好几条街,性能肯定要跪。
这还没完。代码跑起来,数据一多,又是卡顿。我意识到,数据更新触发的重新渲染才是大头。
我用的是React(虽然原理都差不多),发现一个组件的State一变,它下面的所有子组件,不管需不需要,都会跟着重新渲染一遍。这就是典型的“大树抖一抖,所有叶子都跟着动”。
我回头看了一下那些初始加载的脚本和资源。代码打包体积太大,浏览器下载、解析和执行都要花老鼻子时间。

折腾了这么一圈,从DOM结构到样式计算,再到组件更新策略,到资源加载,里里外外优化了个遍。再回头跑一遍Performance测试,渲染时间果然大幅度缩短了。这感觉,就像把一辆老旧的拖拉机,硬生生给它调校成了跑车,看着那时间条缩短,心里别提多舒坦了。