我不知道的 浏览器
进程、线程与多进程架构
很多人对浏览器有一个直觉判断:打开 Chrome,任务管理器里出现一大堆进程,"Chrome 又在吃内存了"。但这些进程分别是什么?为什么不设计成一个进程?一个标签页崩溃为什么不会把整个浏览器拖垮?
浏览器, 沙箱
// 共 4 篇文章
很多人对浏览器有一个直觉判断:打开 Chrome,任务管理器里出现一大堆进程,"Chrome 又在吃内存了"。但这些进程分别是什么?为什么不设计成一个进程?一个标签页崩溃为什么不会把整个浏览器拖垮?
"JavaScript 是单线程的"——这句话几乎每个前端开发者都说过,但很少有人追问一句:为什么?
很多人以为 setTimeout(fn, 0) 就是"立即执行",但实际上——它排在所有当前微任务之后,排在浏览器渲染之后,有时候甚至要等几毫秒。
很多人以为修改一个 CSS 属性会触发"浏览器重新绘制页面",但实际上——改 transform 只需要合成线程处理,改 width 要从布局步骤重新计算,改 background-color 跳过布局但仍需重绘。这三种操作的性能开销可以差 10 倍以上。