# SUMMARY * [简介](./README.md) * [开篇词 | 参透了浏览器的工作原理,你就能解决80%的前端难题](./docs/113399.md) * [01 | Chrome架构:仅仅打开了1个页面,为什么有4个进程?](./docs/113513.md) * [02 | TCP协议:如何保证页面文件能被完整送达浏览器?](./docs/113550.md) * [03 | HTTP请求流程:为什么很多站点第二次打开速度会很快?](./docs/116588.md) * [04 | 导航流程:从输入URL到页面展示,这中间发生了什么?](./docs/117637.md) * [05 | 渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?](./docs/118205.md) * [06 | 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?](./docs/118826.md) * [07 | 变量提升:JavaScript代码是按顺序执行的吗?](./docs/119046.md) * [08 | 调用栈:为什么JavaScript代码会出现栈溢出?](./docs/120257.md) * [09 | 块级作用域:var缺陷以及为什么要引入let和const?](./docs/126339.md) * [10 | 作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的?](./docs/127495.md) * [11 | this:从JavaScript执行上下文的视角讲清楚this](./docs/128427.md) * [12 | 栈空间和堆空间:数据是如何存储的?](./docs/129596.md) * [13 | 垃圾回收:垃圾数据是如何自动回收的?](./docs/131233.md) * [14 | 编译器和解释器:V8是如何执行一段JavaScript代码的?](./docs/131887.md) * [15 | 消息队列和事件循环:页面是怎么“活”起来的?](./docs/132931.md) * [16 | WebAPI:setTimeout是如何实现的?](./docs/134456.md) * [17 | WebAPI:XMLHttpRequest是怎么实现的?](./docs/135127.md) * [18 | 宏任务和微任务:不是所有任务都是一个待遇](./docs/135624.md) * [19 | Promise:使用Promise,告别回调函数](./docs/136895.md) * [20 | async/await:使用同步的方式去写异步代码](./docs/137827.md) * [21 | Chrome开发者工具:利用网络面板做性能分析](./docs/138844.md) * [22 | DOM树:JavaScript是如何影响DOM树构建的?](./docs/140140.md) * [23 | 渲染流水线:CSS如何影响首次加载时的白屏时间?](./docs/140703.md) * [24 | 分层和合成机制:为什么CSS动画比JavaScript高效?](./docs/141842.md) * [25 | 页面性能:如何系统地优化页面?](./docs/143889.md) * [26 | 虚拟DOM:虚拟DOM和实际的DOM有何不同?](./docs/144569.md) * [27 | 渐进式网页应用(PWA):它究竟解决了Web应用的哪些问题?](./docs/144983.md) * [28 | WebComponent:像搭积木一样构建Web应用](./docs/145546.md) * [29 | HTTP/1:HTTP性能优化](./docs/147501.md) * [30|HTTP/2:如何提升网络速度?](./docs/148546.md) * [31|HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络](./docs/150159.md) * [32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源?](./docs/151370.md) * [33 | 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?](./docs/152807.md) * [34 | CSRF攻击:陌生链接不要随便点](./docs/154110.md) * [35 | 安全沙箱:页面和系统之间的隔离墙](./docs/155183.md) * [36 | HTTPS:让数据传输更安全](./docs/156181.md) * [结束语 | 大道至简](./docs/157406.md) * [第二季回归 | 这次我们来专门聊聊V8](./docs/211563.md) * [结课测试 | 这些浏览器的知识你都掌握了吗?](./docs/266883.md) * [加餐一|浏览上下文组:如何计算Chrome中渲染进程的个数?](./docs/165897.md) * [加餐二|任务调度:有了setTimeOut,为什么还要使用rAF?](./docs/169468.md) * [加餐三|加载阶段性能:使用Audits来优化Web性能](./docs/174254.md) * [加餐四|页面性能工具:如何使用Performance?](./docs/177070.md) * [加餐五 | 性能分析工具:如何分析Performance中的Main指标?](./docs/179428.md) * [加餐六|HTTPS:浏览器如何验证数字证书?](./docs/180213.md)