知己知彼——解锁浏览器背后的运行机制

从本章开始,我们的性能优化探险也正式进入到了“深水区”——浏览器端的性能优化。

平时我们几乎每天都在和浏览器打交道,在一些兼容任务比较繁重的团队里,苦逼的前端攻城师们甚至为了兼容各个浏览器而不断地去测试和调试,还要在脑子中记下各种遇到的 BUG 及解决方案。即便如此,我们好像并没有去主动地关注和了解下浏览器的工作原理。我想如果我们对此做一点了解,在项目过程中就可以有效地避免一些问题,并对页面性能做出相应的改进。

“知己知彼,百战不殆”,今天,我们就一起来揭开浏览器渲染过程的神秘面纱!

浏览器的“心”

浏览器的“心”,说的就是浏览器的内核。在研究浏览器微观的运行机制之前,我们首先要对浏览器内核有一个宏观的把握。

开篇我提到许多工程师因为业务需要,免不了需要去处理不同浏览器下代码渲染结果的差异性。这些差异性正是因为浏览器内核的不同而导致的——浏览器内核决定了浏览器解释网页语法的方式。
浏览器内核可以分成两部分:渲染引擎(Layout Engine 或者 Rendering Engine)和 JS 引擎。早期渲染引擎和 JS 引擎并没有十分明确的区分,但随着 JS 引擎越来越独立,内核也成了渲染引擎的代称(下文我们将沿用这种叫法)。渲染引擎又包括了 HTML 解释器、CSS 解释器、布局、网络、存储、图形、音视频、图片解码器等等零部件。

目前市面上常见的浏览器内核可以分为这四种:Trident&#

渲染篇二:知己知彼——解锁浏览器背后的运行机制相关推荐

  1. 渲染篇四:千方百计——Event Loop 与异步更新策略

    千方百计--Event Loop 与异步更新策略 Vue 和 React 都实现了异步更新策略.虽然实现的方式不尽相同,但都达到了减少 DOM 操作.避免过度渲染的目的.通过研究框架的运行机制,其设计 ...

  2. 区块链技术背后的运行逻辑

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术可能是自互联网技术以来最伟大的发明.区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或 ...

  3. 显卡3d渲染测试软件,测评荟 篇二:3D建模和3D渲染是吃CPU还是显卡?以及专业图形显卡和游戏显卡的区别...

    测评荟 篇二:3D建模和3D渲染是吃CPU还是显卡?以及专业图形显卡和游戏显卡的区别 2019-09-11 13:20:52 9点赞 32收藏 8评论 编辑:测评荟 首先,专业图形显卡和游戏显卡区别 ...

  4. 谁打败了浏览器之王?浏览器背后需要什么技术 ? (送书活动)

    前言 文末留言送书5本 Windows官宣:ie浏览器将于6月16日今天正式退役. 那个曾几何时的浏览器之王,经历一次又一次操作系统的迭代,直至新兴浏览器的出现后沦为浏览器鄙视链的最后一层,在叹息与嘲 ...

  5. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)

    <高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

  6. IE浏览器停止服务,曾经的王者为何退役?解析浏览器背后的技术是什么?

    前言 随着Windows的官宣,ie浏览器将于6月16日正式退役. 那个曾几何时的浏览器之王,经历一次又一次操作系统的迭代,直至新兴浏览器的出现后沦为浏览器鄙视链的最后一层,在叹息与嘲笑声中跌出神坛, ...

  7. 图形引擎实战:移动平台海飞丝系统-渲染篇

    大家好,我是来自搜狐畅游引擎部的puppet_master,很高兴有机会继续来分享我们最近在开发的新版移动平台头发渲染方案-海飞丝系统.上一篇<海飞丝-运动篇>中,我们介绍了游戏中头发的特 ...

  8. js 多个定时器_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(二)

    作者:撒网要见鱼   https://segmentfault.com/a/1190000012925872 本文接上篇 <从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(一)> ...

  9. 一台电脑怎么接两个显示器_电脑数码类目显示器 篇二:11.11抄作业,个人消费级显示器怎么选--20款好价显示器推荐_显示器...

    2020-11-09 21:56:2572点赞390收藏91评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合的 ...

最新文章

  1. windows下mysql-8.0.11-winx64解压版配置
  2. JavaScript之自定义对象
  3. 差动机器人毕业设计_双轮差动机器人曲线算法设计与实现
  4. 拖链电缆 机器人电缆_选购电缆拖链需要注意哪些要点
  5. 【数据结构总结】第一章:数据结构基本概念
  6. 【JavaWeb】Response请求转发与重定向辨析
  7. java不要在常量和变量中出现易混淆的字母
  8. Spring Boot中静态文件获得Thymeleaf支持(配置porm.xml)
  9. 帆软按钮Javascript给某个单元格赋值(例:逻辑删除)
  10. Atitit 2016年attilax事业成就表
  11. otdr测试曲线图软件通用,OTDR常见测试曲线
  12. 最好用的木门免费录单软件
  13. MySQL 09 流程控制、自定义函数
  14. 如何用ps修改图片文字颜色
  15. poi4.0升级踩坑合集(更新中)
  16. php f4v元数据,IIS设置支持flv,f4v,mp4,ogv,webm
  17. 妖魔复苏:天师下山!开局传承天师度(二)
  18. 【SAP ABAP学习资料】SQL查询分析器——程序代码
  19. VS 2019 C++ 如何在非控制台程序中打开控制台
  20. python窗口显示文本tk_python-Tkinter文本小部件设置选项卡

热门文章

  1. maven md5依赖包
  2. FPGA实现计时器功能(黑金开发平台)
  3. 【数字逻辑基础】三人表决电路及四舍五入判别电路实验
  4. <cstdio> stdio.h头文件
  5. STM8S103电路板TMP275温度模采集TM1650数码管显示程序温度测量设计
  6. Scratch 游戏项目学习法 —— 接苹果(七)让苹果回到顶部
  7. 无法启动此程序,因为计算机中丢失 VCRUNTIME140_1.dll。
  8. Python游戏汇总:三十个pygame游戏代码
  9. 如何安装libaio开发库
  10. 达梦数据库迁移数据失败,错误码:6002,消息校验异常