浏览器是怎么工作的?一篇看懂它的“大脑”

0 阅读3分钟

浏览器是怎么工作的?一篇看懂它的“大脑”

一、从输入网址到看到网页,浏览器都干了啥?

1. 你输入的到底是什么?

当你在地址栏敲字时,浏览器其实是在猜你的意图:

如果你输入「baidu.com」,它会自动补全成「www.baidu.com」

image.png

如果你输入「天气」,它会用默认搜索引擎帮你找「天气」相关的网页 它还会偷偷查你的浏览历史,给你推荐可能想访问的网站

2. 网络请求的三步曲

浏览器要拿到网页数据,得先和服务器“打招呼”:

找地址:先问DNS服务器「baidu.com」的IP地址是多少(就像查电话簿) 打电话:用TCP协议和服务器建立连接(三次握手确认双方在线)

这里补充下TCP的过程:

image.png

发请求:用HTTP协议说「嘿,我要这个网页」,服务器就回传数据

3. 把代码变成网页

收到数据后,浏览器开始施展魔法:

第一步:把HTML代码变成DOM树(想象成搭积木)

image.png

第二步:给积木涂颜色(CSS样式计算)

第三步:算好每块积木的位置(布局排版) 创建布局树:该过程主要检查DOM树上的每个节点的样式。是否具有隐藏样式(例如display:none),如果有的话就屏蔽掉,从而构建出一颗新的布局树。

第四步:画出来(GPU加速渲染)

4. JavaScript怎么跑起来的?

浏览器里的JavaScript引擎(比如Chrome的V8)就像个超级计算器:

先把代码翻译成中间语言(类似写草稿) 再优化成更快的机器码(精简计算步骤) 最后一边执行一边清理没用的内存(自动回收垃圾)

5. 你点按钮时发生了什么?

每次点击、滑动,浏览器都在背后默默工作:

记录你的动作轨迹(事件监听) 判断点击的是哪个按钮(事件冒泡) 执行对应的操作(比如跳转页面或弹出提示)

二、为什么浏览器不会轻易崩溃?

现代浏览器就像个分工明确的办公室:

角色工作内容
主进程管理地址栏、书签、下载这些“前台事务”
渲染进程每个网页都是独立的“房间”,一个房间挂了不影响其他房间
网络进程专门负责打电话、收快递(网络请求和缓存管理)
插件进程处理特殊任务(比如播放视频、运行小程序)
GPU进程给网页加上酷炫特效(3D动画、视频播放)

三、怎么让网页加载更快?

  1. 省流量的小技巧 压缩文件:用Brotli算法把代码文件压成“压缩包”(能省60%体积) 提前加载:告诉浏览器“这个图片马上就要用了”(预加载) 用缓存:把常用文件存在手机里(下次打开快10倍)
  2. 让网页更流畅 别让代码卡顿:把大段JavaScript拆成小块执行 懒加载图片:只加载屏幕能看到的图片(滚动时再加载后面的) 别乱改布局:一次修改多个样式,别频繁刷新页面结构 四、浏览器怎么保护你的数据?
  3. 沙盒隔离 每个网页都在自己的“小房间”里运行,不能乱翻别人的东西 即使网页有病毒,也出不了这个房间
  4. 权限管控 同源策略:A网站不能偷偷读B网站的数据(就像你家门禁不能刷别人小区) 内容安全策略:规定哪些脚本能运行(比如禁止加载不明来源的代码)
  5. 加密通信 HTTPS就像快递箱带锁,保证数据在传输过程中不被偷看 浏览器会自动检测证书,发现异常就报警(红色警告标志)