JavaScript 进阶营我在学前端让前端飞

关键路径渲染

2018-05-11  本文已影响24人  辉lazy

图片总是上传失败。

这里是好的

浏览器渲染原理

文档对象模型 (DOM)

[图片上传失败...(image-a35366-1526004305368)]

注:DOM 是增量构建,没有必要等到 DOM 构建完成之后在渲染到页面

CSS 对象模型 (CSSOM)

[图片上传失败...(image-c50f77-1526004305369)]

与 DOM 的流程类似,只不过它是 CSSOM

[图片上传失败...(image-e6dc0b-1526004305369)]

上图说明 CSSOM 为啥是树形结构

构建渲染树 Render Tree

[图片上传失败...(image-571272-1526004305369)]

注:简单提一句,请注意 visibility: hidden 与 display: none 是不一样的。前者隐藏元素,但元素仍占据着布局空间(即将其渲染成一个空框),而后者 (display: none) 将元素从渲染树中完全移除,元素既不可见,也不是布局的组成部分。

总结:

布局阶段 Layout:计算渲染树的位置和大小

为弄清每个对象在网页上的确切大小和位置,浏览器从渲染树的根节点开始进行遍历。

执行渲染树构建、布局和绘制所需的时间将取决于文档大小、应用的样式,以及运行文档的设备:文档越大,浏览器需要完成的工作就越多;样式越复杂,绘制需要的时间就越长(例如,单色的绘制开销“较小”,而阴影的计算和渲染开销则要“大得多”)。

查看哪些样式触发 Layout:https://csstriggers.com/

最后 Paint

布局完成后,浏览器会立即发出“Paint Setup”和“Paint”事件,将渲染树转换成屏幕上的像素(,也就是填充)

资源对渲染的影响

CSS 资源

浏览器会在何时渲染页面:加载完部分 DOM 和 CSSOM

<style></style>
<link />

重点:关键资源

JS 资源

重点:关键资源

不是关键资源

[图片上传失败...(image-cddec-1526004305369)]

字体

图片:不会阻塞

优化关键渲染路径

目标:以下压缩到最低


构建 DOM 是增量构建

浏览器无需等待 HTML 加载完毕,就开始构建 DOM

使用 Timeline 注意事项

上一篇下一篇

猜你喜欢

热点阅读