浏览器
前几年,有一个意气风发的少年去面试,当面试官问到一个简单的问题:我们这些个学前端的,每天和谁打的交道最多?
此刻他的表情:
于是他理直气壮的说:当然时和这个浏览器打的交道最多了。
面试官:这个时候面试官就挺高兴的哈,心想:这小子知道点东西啊。说:那你知道我们现在的主流浏览器是什么吗?
小伙子:想了想,这问题不难啊!随口就说了句:谷歌
面试官:这小子有点东西啊(心想)
小伙子见面试官笑了:又接上了,百度,搜狗,360。
这个时候面试官又笑了:面带笑容但是不好意思拒绝,就委婉的说了句,小伙子回去等消息吧。
浏览器的组成
浏览器各部分的作用
- 用户界面 -包括地址栏、后退/前进按钮、书签目录等,也就是你-所看到的除了页面显示窗口之外的其他部分
- 浏览器引擎 -可以在用户界面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器中各个部分之间相互通信的核心
- 渲染引擎 -解析DOM文档和CSS规则并将内容排版到浏览器中显示有样式的界面,也有人称之为排版引擎,我们常说的浏览器内核主要指的就是渲染引擎
- 网络 -用来完成网络调用或资源下载的模块
- UI 后端 -用来绘制基本的浏览器窗口内控件,如输入框、按钮、单选按钮等,根据浏览器不同绘制的视觉效果也不同,但功能都是一样的。
- JS引擎 -用来解释执行JS脚本的模块,如 V8 引擎、JavaScriptCore
- 数据存储 -浏览器在硬盘中保存 cookie、localStorage等各种数据,可通过浏览器引擎提供的API进行调用
浏览器的家谱
市场上的主流浏览器
总结国内厂商内核来看,一般分为三类:
1.使用的trident内核,比如说:2345、世界之窗
2.使用trident+webkit/blink双核,比如说:qq、uc、猎豹、360、百度
3.使用webkit/blink单核,如:搜狗、遨游。
双核浏览器通过webkit内核来访问一些不需要进行网上交易的网站,使用起来速度更快更方便;双核浏览器在进行支付系统或者时网上银行的访问时,则使用的使trident内核。这就是双核浏览器的告诉的高速模式和兼容模式。双核浏览器是一个不仅仅具有ie浏览器内核同时兼备非ie浏览器内核的浏览器,可以让用户在浏览器当中体验不同的需求。
学习了上面的知识之后,我们一起来看看浏览器的架构吧
浏览器的架构
通过浏览器的任务管理器,(快捷键是shift+Esc),我们可以看到以下的几个进程
浏览器进程
负责界面展示(地址栏、导航栏、书签等)、处理用户事件、管理子进程
GPU 进程
处理来自其他进程的 GPU 任务,比如来自渲染进程或扩展程序进程的 CSS3 动画效果,来自浏览器进程的界面绘制等。
Network Service 进程
负责页面的网络资源加载,比如在地址栏输入一个网页地址,网络进程会将请求后得到的资源交给渲染进程处理。本来只是浏览器主进程的一个模块,现在为了将浏览器进程进行“服务化”,被抽取出来,成了一个单独的进程。
渲染进程
浏览器会为每个标签页单独启动一个渲染进程,所以它和上述进程不同,并不是唯一的。
渲染进程的任务是将 HTML、CSS 和 JavaScript 转化为⽤户可以与之交互的网页,每个渲染进程都会启动单独的渲染引擎线程和 JavaScript 引擎线程。
扩展程序进程
主要是负责插件的运⾏,和渲染进程一样,也不是唯一的,浏览器会为每个插件都启动一个进程。这样的设计也是从安全性和稳定性考虑。
如果有任何问题的话,欢迎指出,本人不胜感激