浏览器是一个多进程模式
-
浏览器进程:负责用户显示、用户交互、子进程管理
-
网络进程:处理网络资源加载(HTML、CSS、JS)
-
渲染进程:每个页面都是一个单独的渲染进程
-
GPU进程:绘制页面
-
插件进程:浏览器安装的插件运行
输入网址到渲染页面
大致过程:用户输入URL,会开始导航(浏览器进程),浏览器进程会准备一个渲染进程,用于渲染页面,同时通过网络进程加载资源,最终将加载到的资源交给渲染进程渲染,最后渲染完毕(进程间通过ipc方式通信)
有两阶段(导航流程和渲染流程)
导航流程
-
输入URL,如果不是URL,就会默认作为关联字搜索
-
如果是URL,浏览器会去构建一个请求行信息,然后将请求行信息交给网络进程处理
-
网络进程处理有两种情况,首先会判断是否存在缓存,如果缓存存在、没有修改、没有过期则会继续使用缓存
-
如果缓存不可用,则会发起网络请求去请求DNS确定ip和端口号,这里也分为两种情况,如果缓存过域名,如果有就直接用,如果没有就去解析这个域名,得到ip和端口号(DNS域名解析)
-
找到了ip和端口号后会建立TCP连接,传输数据
-
拿到数据后,网络进程会通过content-type进行文件类型,如果是字节流类型