浏览器输入url
- 首先会判断输入的内容是不是合法的url如果不是则会判定为搜索内容,然后调用默认的搜索引擎去进行内容搜索
- 进入页面资源请求的流程,先在本地查询是否存在缓存的内容(强缓存、协商缓存)
- 强缓存
- Cache-Control:max-age=3600
- Expires: Thu, 25 May 2020 12:30:00 GMT
- 协商缓存
- 如果内容不存在就会解析域名,从本地一层层往上到DNS服务器查询IP
- 判断是不是https的连接(如果是https的话 会先建立TLS连接),然后建立TCP连接。
- 三次握手
- 第一次client端发起通知到服务端
- 第二次server端收到并发起通知到服务端
- 第三次client端收到server端的消息,并通知server端可以收到
- 然后浏览器会在本地构建好请求信息,将请求头,cookie等信息加入请求信息当中,发给服务器。
- 服务器接收到信息后会向浏览器返回响应头和响应体。
- 如果服务器接收的状态码是301或者302的时候,需要重定向。
- 浏览器可以在响应头里面获取到location的信息,然后发起新的请求信息。
- 如果响应的状态码是200的话,就说明请求成功了,就需要对响应的信息进行解析,解析的方式浏览器会由Content-Type的值来决定。
- 如果返回的结果的content-type是text/html就会需要进行解析html,网络进程会提交文档进入到渲染的进程中。
- 在浏览器中一个same-site(相同的协议、相同的根域名下所有的端口)下的tab页面会共用一个渲染流程。
- 在一个页面内存在多个iframe的嵌入的话 也会开启多个渲染进程。
- 浏览器进程接收到文档的时候就会更新浏览器的安全状态,前进后退的状态,地址栏的url,最后更新web页面。