浏览器输入URL发生了什么:DNS解析、TCP握手、HTTP缓存、重定向、服务器状态码、渲染引擎和JS引擎互斥、渲染过程、浏览器进程、网络进程、渲染进程
输入地址,浏览器查找域名的 IP 地址。
浏览器向 该 IP 地址的web 服务器发送一个 HTTP 请求,
在发送请求之前浏览器和服务器建立TCP的三次握手,判断是否是HTTP缓存,
如果是强制缓存且在有效期内,不再向服务器发请求,
如果是HTTP协商缓存向后端发送请求且和后端服务器对比,在有效期内,服务器返回304,直接从浏览器获取数据,
如果不在有效期内服务器返回200,返回新数据。
请求发送出去服务器返回重定向,浏览器再按照重定向的地址重新发送请求。
如果请求的参数有问题,服务器端返回404,
如果服务器端挂了返回500。
如果有数据一切正常,当浏览器拿到服务器的数据之后,开始渲染页面同时获取HTML页面中图片、音频、视频、CSS、JS,
在这期间获取到JS文件之后,会直接执行JS代码,阻塞浏览器渲染,因为渲染引擎和JS引擎互斥,不能同时工作,所以通常把Script标签放在body标签的底部。
渲染过程:
将HTML转换成dom树,
再将CSS样式转换成stylesheet,
根据dom树和stylesheet创建布局树,
对布局树进行分层,
为每个图层生成绘制列表,
再将图层分成图块,
紧接着光栅化将图块转换成位图,
最后合成绘制生成页面。