咱们都知道浏览器的功能,就是向服务器发送请求,而后在浏览器窗口中展现对应请求回来的网络资源。前端
那一个经典的前端面试题来讲:「在浏览器地址栏中输入 url 到页面展示的短短几秒内浏览器究竟作了什么?」面试
个人记忆点中,更多的是如何查询对应的 IP,而后发送请求到服务器,而后在渲染就结束了,不知你是否是这样?数据库
可每每咱们好像忽视了,当代浏览器那些细微的交互点,如 tab 上的 spinner 的展示。为了能慢慢的理解上述的问题,咱们首先一块儿理一下浏览器这款软件中到底有有什么吧。后端
当代现有的浏览器主要由用户界面(The user interface)、浏览器引擎(The browser engine)、呈现引擎(The rendering engine)、网络(Networking)、JavasScript 解释器(JavaScript interpreter)、用户界面后端(UI backend)、数据存储组成(Data storage)。浏览器
而这些组件的功能以下:服务器
根据前置知识可知:软件是由其中进程能够运行的。那么若是想写一款浏览器的话,咱们有两种实现思路,要么实现为单进程多线程模式,要么实现为多进程模式。网络
那咱们经常使用的浏览器是属于哪一种模式呢?多线程