Blog Cover

postMessage的性能真相:Web Workers通信为何总在关键时刻掉链子

2009年,Web Workers作为HTML5规范的一部分首次引入浏览器。十五年后,尽管多核CPU已成标配,但大多数Web应用依然在单线程的泥潭中挣扎。问题不在于开发者不知道Web Workers的存在——而在于当他们真正尝试使用时,发现数据传输的开销可能比计算本身更令人头疼。 ...

13 min · 6327 words

浏览器视频处理为何终于摆脱了WebAssembly的依赖:WebCodecs API的架构解析与性能突围

2021年,Chromium团队在Chrome 94中正式发布了WebCodecs API。这个看似低调的新特性,实际上解决了困扰Web开发者十五年的根本问题:浏览器视频处理要么是"黑盒"(无法控制细节),要么是"低效"(需要WebAssembly搬运编解码器)。 ...

17 min · 8270 words

前端构建工具的四十年演进:从任务运行器到原生ESM开发服务器的技术博弈

2019年,一家电商公司的前端团队遇到了一个奇怪的问题:每次修改一行CSS代码,需要等待32秒才能在浏览器中看到效果。开发人员习惯了在代码编辑器和浏览器之间频繁切换,32秒的等待时间足以让他们忘记刚才想做什么改动。这不是个例——在那个时间点,一个中型React项目的Webpack冷启动时间动辄超过10秒,HMR(热模块替换)响应时间经常超过300毫秒。 ...

23 min · 11081 words

React Fiber架构如何让前端框架打破主线程阻塞困境

2017年,React团队做出了一个大胆的决定:重写React的核心算法。这个被称为Fiber的项目历时两年多,彻底改变了React处理更新的方式。为什么要花这么大力气重写一个已经广泛使用的库?答案藏在浏览器的单线程本质里。 ...

14 min · 6615 words

从Sidecar到eBPF:服务网格流量管理的十五年架构博弈

2016年,某电商平台在双十一促销中遭遇了诡异的服务调用超时。排查后发现,问题并非来自业务代码,而是服务间的网络通信层——每个微服务实例旁边都跑着一个Envoy代理,它们在处理mTLS加密、流量统计、熔断检测等任务时,竟吃掉了30%的CPU资源。这不是一个孤立的案例,而是一个技术演进过程中必然会暴露的深层矛盾:我们为了解决微服务通信的复杂性,引入了一个新的复杂层。 ...

13 min · 6439 words

当WebSocket遇上QUIC:WebTransport如何重塑浏览器实时通信的四十年技术演进

2024年,WebTransport API在Chrome 97、Firefox 114、Edge 97中正式发布。这个基于HTTP/3的浏览器API,承诺为实时通信带来「接近原生」的性能体验。W3C WebTransport工作组正在推进规范向Candidate Recommendation阶段演进,目标在2025年完成标准化。但问题的根源要追溯得更远——四十年来,TCP协议的设计选择一直在制约着浏览器端的实时通信能力。 ...

14 min · 6966 words
Blog Cover

中断处理为何必须拆成两半:从顶半部到底半部的二十年架构博弈

1983年,当Linus Torvalds还在芬兰赫尔辛基大学读书时,Unix系统的中断处理已经发展了二十多年。那时的中断处理程序必须完成所有工作:响应硬件、读取数据、通知进程。这种设计在单处理器、低频率设备时代还算可行,但随着网络速度从10Mbps攀升到100Mbps,再到今天的400Gbps,中断处理的时间预算被压缩到了微秒级。 ...

11 min · 5440 words