面试时我通常会问候选者一个问题:“在浏览器里,从输入URL到页面展示中间发生了什么? ”
这道题涉及到网络、操作系统、Web等一系列的知识,如果你要开发流畅的页面,或者诊断Web页面中的性能问题,那你就需要了解URL是怎么变成页面的,只有弄懂这些之后,你才可以站在全局的角度定位问题或者写出高效的代码。
但遗憾的是,大多数人只能回答其中零散的知识点,并不能将这些知识点串联成线,无法系统全面地回答。
也难怪,浏览器确实会涉及很多概念,不仅繁多而且琐碎,包括网络、渲染、安全,以及大前端相关的大量概念。比如,首屏的显示就涉及了DNS、HTTP、DOM解析、CSS阻塞、JavaScript阻塞等技术因素,其中一项没处理好就可能导致整个页面的延时。如果没有系统的学习,很容易出现遗漏和盲点。
所以,我推荐大家看看极客时间的专栏《浏览器工作原理与实践》。
专栏分为 7 大模块,共 35 篇文章,覆盖 JavaScript 执行机制、引擎 V8 的工作原理、Web 页面中的事件循环系统、HTTP/1、HTTP/2 和 HTTP/3 的介绍、以及最近比较火的 PWA 的工作原理等内容。
最吸引我的,是李兵会自己绘制原理图和流程图,用通俗易懂的语言,图文并茂的展现形式,带你层层深入浏览器,看懂前端本质。