这个问题如果要展开讲的话,能讲个半小时,所以我们侧重于浏览器的渲染上。其他的点用一句话总结带过。
1. 输入URL =>
2. 浏览器分析域名结构 =>
3. 域名 转 IP (衍生问题 1 为什么要用IP,有多少位(网易)2 既然mac是唯一的,那为什么不用mac地址(字节)3 DNS递归详细讲讲, 使用到的网络协议(阿里)) =>
4. 三次握手 => ( 衍生问题 1 两次握手行吗,为什么 2.讲讲 HTTPS 在这之后多一次的 SSL握手
5. 建立 HTTP连接 (衍生问题, 各大版本的http,1.0 , 1.1, 2.0 )
6. 服务器响应
7. 四次挥手关闭 TCP
8. 加载HTML,CSS,JS
渲染引擎把 html 字符串 转成 DOM树 与此同时 把 css 转为 CSSOM 树;
冷知识1: 当html 完全被解析 DOMContentLoaded事件调用
冷知识2: 解析 css 的时候 CSS选择器的读取顺序是从右向左
当解析html文件时候,遇到了js文件,会停止html文件的解析! (因为可能会改变dom结构)
如果script 标签有 async 和 defer 则不会停止。这两者的区别为,async 不会保持原脚本的顺序,适用于一些需要在首屏用到的script,则defer则会保持原脚本顺序。
解析完了html css js,也生成了dom树后,浏览器还干了什么呢??
下面几步:
样式计算
布局
绘制
光栅化
合成
各种事件 ...