从输入url到页面输出的过程发生了什么
浏览器渲染过程
输入url
去浏览器等缓存中寻找资源(强缓存,协商缓存)
浏览器向DNS(Domain Name System)服务器请求解析该URL中的域名对应的IP地址 (cdn 分派)
解析后 将ip地址和默认端口80去服务器建立tcp链接
浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器 (三次握手)
服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器
释放Tcp链接
将服务器返回的数据在浏览器渲染 (浏览器html渲染过程)
- 将HTML解析成树形的数据结构。
- 将css解析成cssdom tree
- cssdom tree和dom tree合并后生成 render tree
- 绘制和合并图层
优化方向
1. 既然会经过缓存 可以使用 强缓存和协商缓存的方向
2. 既然会使用dns解析,可以使用cdn得到最近的ip地址
3. 渲染html需要时间 可以通过压缩js等过程来减少编译过程
参考
1. https://zhuanlan.zhihu.com/p/34453198?group_id=957277540147056640
2. https://juejin.cn/post/6911978839883120653