1.浏览器内部组成
我们先来看浏览器的内部组成(以chrome为例):
我们看到浏览器主要包括:
-
1个浏览器主进程
主要负责界面显示,用户交互,子进程管理 -
多个渲染进程
一般浏览器会为每个Tab标签窗口创建一个渲染进程,主要负责将html,css,JavaScript转换成我们看到的网页,里面包含多个线程,比如JavaScript的V8引擎。 -
1个GPU进程
主要负责复杂的计算,比如3D动画,图形绘制。 -
1个网络进程
主要负责网络资源加载 -
多个插件进程
浏览器器每个插件都会分配一个插件进程。
2.从一个url开始
我们下面来看在地址栏输入一个url后,浏览器做了什么事,我们先来看下流程图:
下面我们来分析下上面的流程图:
- 当用户在地址栏输入一个地址或者关键字,并按下回车键的时候,意味着当前页面很快要被替换,在这个时候会触发当前页面的beforeunload事件。
然后浏览器的当前tab栏就变成加载状态,变成一个转动的圆圈,此时页面还没有开始改变,需要等到后面“提交文档”后,才会别新内容替换。 - 浏览器主进程合成完整Url:如果是输入的是地址,比如 “baidu.com”,则自动合成为:https://www.baidu.com/。
如果输入的是关键字,则使用默认搜索引擎,合成带搜索关键字Url,比如输入:‘hello’,默认搜索引擎为百度,则合成为