前Youtube前端开发者Chris Zacharias 介绍过一个工作中实际发生的辛普森悖论故事:
--------------------
三年前(指2009年),我还是 YouTube 的一名前端工程师时,一位资深同事在一次会议上痛斥视频播放页的体积——膨胀到了 1.2 MB、几十个请求。“人家能用不到 100 KB 写个 Quake ,我们的脸呢!”我既认同又手痒,于是决心把播放页压到 100 KB 以下。当晚回圣布鲁诺的班车上,我写了原型:只保留顶部导航、播放器、五条相关视频、分享、举报按钮和十条 AJAX 评论,代号“Feather”。
功能已极简,却仍 250 KB。深挖发现 Closure 编译器无法剔除未用代码,我只能人肉压缩 CSS、JS 和雪碧图。三天后仍超 100 KB,于是把刚写完的 HTML5 播放器换上,取代臃肿的 Flash——砰!98 KB,仅 14 个请求。我加上简单监控,向少量用户灰度发布。
一周后数据回来,大跌眼镜:Feather 的平均整页延迟竟不降反升!我把体积和请求数砍到原来的十分之一,结果视频加载反而更慢,完全不合逻辑。反复核对无果,世界观快崩塌时,同事找到了答案:地理位置。
把数据按地区拆分后发现,东南亚、南美、非洲甚至西伯利亚的流量激增。进一步调查显示,在这些地区,Feather 的首帧加载要两分多钟——而原版 1 MB 页面竟需二十分钟以上!这意味着,在视频开始前,用户要等上二十分钟,于是大量人口根本用不了 YouTube。Feather 的两分钟虽慢,却让“能看视频”第一次成为可能;口碑迅速传播,数据因此被彻底拉偏。
Feather 让我深刻体会到全球互联网的现状:我们身处高带宽的幸运区,而世界大部分地方并非如此。客户端代码越轻,你就越能把产品真正带到这些新市场。