今日学习(二):浏览器从输入地址到渲染页面

104 阅读2分钟

前言

学习浏览器的工作原理,在此做个笔记。

从输入地址到渲染页面

1. 浏览器判断地址

浏览器进程判断输入的是否是一个地址,如果是,下一步;否则就直接搜索。

2. 查找缓存

浏览器进程去自己的缓存中查找页面,如果没有缓存,下一步;否则直接渲染页面。

3. dns查询

浏览器会先查自己的dns缓存,如果命中,则下一步;否则查询向网络提供商询问,查询dns缓存,如果命中,则下一步;否则去跟服务器查询,递归+迭代的方式分别查询顶级域名,域名,全域名,返回ip地址。

4. 构建http链接

tcp三次握手+tls连接

5. 数据传输

http需要不断发送数据包+确认数据包

6. 断开tcp链接

四次挥手

7. 解析内容

解析返回的内容,如果是html,则下一步;否则搞个简单的html包裹起来,然后走html展示

8. 解析dom,生成dom树

9. 解析css,生成styleSheets

10. 加载javascript

如果存在defer 属性,加载后在styleSheets和dom树生成后执行 如果存在sync属性,加载后立即执行,不保证顺序 否则加载后立即执行,同时阻塞dom解析

11. 布局

根据dom树和styleSheets,生成布局树

12. 分层

根据布局树,分层 存在层叠上下文属性的会单独一层;存在clip的也会单独的一层。

13. 绘制

分层后按照顺序绘制图层

14. 光珊化

绘制图层后,合成线程会进行图层转图块,然后优点光栅化视口附近的图块,转换为位图。通常会gpu加速。

15. 显示

位图会提交到浏览器进程中,然后浏览器缓存到内存中,最后显示在显示器上。

名词解释

光栅化 图块转位图的过程

重排 改变dom几何属性或者需要计算的时候就会重排

重绘 改变颜色等属性,会触发重绘

合成 使用transform/will-change直接提成为合成层,动画效果会更好

总结

一共分为4大过程,判断,dns,数据传输,渲染。