前端性能原理解读(一)
1、网页的生成过程 要了解网页性能好不好,那就必须先了解网页是怎么生成的 HTML转换为DOM节点 CSS转换为CSSOM(CSS Object Model) DOM与CSSOM结合生成一个渲染树(包含每一个节点的视觉信息) 生成布局:即将所有渲染树的所有节点进行平面合成 将布局绘制(paint)在屏幕上 这五步里面,第一步到第三步都非常快,耗时的是第四步和第五步。 "生成布局"(flow)和"绘制"(paint)这两步,合称为"渲染"(render)。 2、重绘与重排 网页生成的时候,至少会渲染一次,用户访问的过程中还会不断渲染。以下3中情况会导致网页重新渲染。 修改DOM 修改样式表 用户事件(比如鼠标悬停、页面滚动、输入框键入文字、改变窗口大小等等) 重新渲染就需要重新生成布局、重新绘制。前者叫做“重排”(reflow),后者叫做“重绘”(repaint) 需要注意的是, "重绘"不一定需要"重排" ,比如改变某个网页元素的颜色,就只会触发"重绘",不会触发"重排",因为布局没有改变。但是, "重排"必然导致"重绘" ,比如改变一个网页元素的位置,就会同时触发"重排"和"重绘",因为布局改变了。 3、对于性能的影响 重绘与重排会不断触发、这是不可避免的。但是,他们非常耗费资源,是导致网页性能低下的根本原因。 提高网页性能就是要降低“重绘”和