老生常谈的面试题了
在浏览器地址栏输入URL发生了什么,主要有以下几个过程:
DNS解析
- 浏览器校验输入内容是否为有效地址,否则发起搜索
- 进行DNS解析,以此从浏览器缓存、系统缓存、路由器缓存、ISP缓存中获取服务器的IP地址,端口号
- 利用IP地址和远程服务器建立TCP连接,三次握手
- 构建请求头信息,发起请求
请求发送/响应
- 发起请求时会检查浏览器缓存,涉及
强缓存
、协商缓存
,如果命中强缓存和协商后缓存未过期,直接从缓存中获取数据,否则获取响应数据 - 检查响应类型Content-Type,字节流类型调用下载管理器,否则通知浏览器进程准备渲染进程准备进行渲染
- 断开链接 四次挥手
浏览器渲染
- 获取HTML原始字节,根据文件指定编码(UTF-8)进行转换
- 词法分析
- 构建DOM
- DOM树跟CSSOM合成生成渲染树
- 渲染树只包含渲染网页所需的节点
- 布局计算每个对象的位置跟大小
- 绘制,将渲染树渲染到屏幕上