postMessage的性能真相:Web Workers通信为何总在关键时刻掉链子
2009年,Web Workers作为HTML5规范的一部分首次引入浏览器。十五年后,尽管多核CPU已成标配,但大多数Web应用依然在单线程的泥潭中挣扎。问题不在于开发者不知道Web Workers的存在——而在于当他们真正尝试使用时,发现数据传输的开销可能比计算本身更令人头疼。 ...
2009年,Web Workers作为HTML5规范的一部分首次引入浏览器。十五年后,尽管多核CPU已成标配,但大多数Web应用依然在单线程的泥潭中挣扎。问题不在于开发者不知道Web Workers的存在——而在于当他们真正尝试使用时,发现数据传输的开销可能比计算本身更令人头疼。 ...
2023年9月,土耳其电商平台Trendyol的产品详情页INP指标高达963毫秒,处于"差"评级。用户点击商品后,页面近乎冻结。六个月后,这个数字降到了481毫秒——INP改善50%,点击率提升1%。转折点只改动了了几行代码:用scheduler.yield()替换了setTimeout。 ...
2017年3月,WebAssembly在所有主流浏览器中落地。一时间,“JavaScript已死"的论调甚嚣尘上。毕竟,一个能让C++代码在浏览器中以接近原生速度运行的二进制格式,听起来像是动态语言的终结者。 ...
你修改了数据,视图却没有更新。这是Vue开发者最常遇到的困惑之一。 打开浏览器控制台,打印那个看似已经变化的对象,值确实变了——但界面纹丝不动。于是你开始怀疑人生:Vue不是自动响应式的吗?为什么还要我手动调用$forceUpdate? ...
1964年,Peter Landin在一篇题为《The Mechanical Evaluation of Expressions》的论文中首次提出了"闭包"(closure)的概念。他将闭包定义为一个包含λ表达式及其相关环境的"信息束"。六十年后,这个概念几乎出现在所有现代编程语言中——JavaScript、Python、Rust、Go、Swift、C++、Java——但每种语言的实现方式却大相径庭。 ...