浏览器和内核
| 内核 | 浏览器 |
|---|---|
| Trident | IE |
| Webkit | Safari(部分开源) |
| Gecko(开源,速度和兼容性平衡且优秀) | FireFox |
| Blink | Chrome |
| Blink | Opera |
Trident内核是IE最先开发或使用的,也称IE内核。Gecko内核是Netscape6开始采用的内核,后来FireFox也采用了该内核。谷歌以前使用Webkit内核,opera以前用presto内核(速度极快但兼容性较差),后来谷歌和opera software在webkit基础上共同开发出Blink内核(Chrome浏览器内核),Blink速度奇快无比、兼容性好、且保留了一定的后台管理能力以及拓展能力。
360浏览器、猎豹浏览器内核:IE+Chrome双内核
搜狗浏览器、QQ浏览器:Trident(兼容模式)+Webkit(高速模式)
参考:
baijiahao.baidu.com/s?id=162969…
浏览器构成
外壳shell(用户界面)+内核(渲染引擎和js引擎)+其他
用户界面
包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分
浏览器引擎
在用户界面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器各个部分之间相互通信的核心
渲染引擎
解析DOM文档和CSS规则将其排版到浏览器上并显示有样式的界面,也称排版引擎,常说的浏览器内核主要指渲染引擎
网络
用来完成网络调用和资源下载的模块
JS引擎
用来解释执行js脚本
数据存储
浏览器在硬盘中保存的cookie、localStorage等各种数据,可以通过浏览器引擎提供的API进行调用
www.cnblogs.com/echo-hui/p/…
zhuanlan.zhihu.com/p/32751855
blog.csdn.net/liyong19901…
从输入url并按下回车开始。。。
- 浏览器查找当前URL是否存在缓存,并比较缓存是否过期
- DNS解析URL对应的IP(主要五大步骤)
- 根据IP进行TCP连接
- HTTP发起请求
- 服务器处理请求,发起HTTP响应
- 浏览器接受HTTP响应,客户端渲染
浏览器缓存,HTTP缓存有多种规则,根据是否需要重新向浏览器发起请求分为强制缓存和对比缓存(未完详见)
DNS域名解析,实际是将域名还原为IP地址过程:
- 首先浏览器先检查本地hosts文件是否有这个网址映射,如果有就调用这个IP映射,完成域名解析
- 如果没有就查找本地DNS解析器缓存,如果查到则返回
- 如果没有查本地DNS服务器,如果查到则返回
- 最后迭代查询:根域服务器->顶级域->第二层域->子域
TCP连接,三次握手
浏览器向服务器发送HTTP请求,请求起始行+请求头+请求主体
浏览器接受响应,状态码+响应头+响应报文
客户端渲染,
关闭TCP连接,四次挥手
参考
未完。。。本着学习和总结的心态,若文中有什么问题或者其他想法请大家指出