# 7.输入url发生了什么
https://segmentfault.com/a/1190000006879700
浏览器进程检查 url,组装协议,构成完整 url
浏览器进程通过进程间通信,把 url 发给网络进程
网络进程查看该 url 是否有本地缓存,如果有就返回给浏览器进程
- 强缓存,max-age,Expires
- 没有强缓存再走协商缓存
如果没有,网络进程向 web 服务器发起 http 请求
- 进行 DNS 解析,获取 IP 地址(首先在本地 DNS 缓存里查找)
- 利用 ip 地址和端口建立 TCP 连接
- 如果是 HTTPS 会有 “非堆成加密” 获取密钥过程
- TCP 三次握手
- 服务器响应后,网络进程接受响应头和响应数据,并解析其内容
网络进程响应
- 检查状态码,如果是 301、302,则从 location 中读取地址,重新请求
- 200 处理:检查 Content-Type, 如果是字节流类型,则提交给下载管理器,不再进行后续渲染;
- 如果是 html 则通知浏览器进程准备进行渲染
准备渲染进程
传输数据,更新状态
- 渲染进程准备好后,浏览器进程向渲染进程发起消息,渲染进程收到消息后和网络进程建立传输数据的管道
- 渲染进程接收完数据后,向浏览器进程回复消息
- 浏览器进程收到消息后更新浏览器界面状态
渲染进程渲染页面