现在我看书的时间远不如从前了,1年大概只能精读2-3本书,泛读20本左右。但即便是把这个数字扩大1倍,我也能断定《Web性能》在我的书架上也绝对能侧身一年一遇的好书之列。说实话,我并没有特别认真地读,更没有从头到尾地读,当我看完这本书的第1章(延迟和带宽)和第5-6章(无线网络概览&Wifi)后,就因感到我的人生已发生极大变化,而把它遗之一旁。和那种人云亦云的推荐不同,接下来我将详细地告诉你本书是如何改变我的人生的。

那阵子我正好遇到一个棘手的事。我有个Mac笔记本,打算从另一台装有Win7的机子上复制一些文件。我极为惊讶地发现,两台电脑的传输速度只有可怜的1.5M/s。要知道我上传文件到网络硬盘也轻松突破这个数字啊。换句话说,我从Win7把文件上传到网盘,再在Mac上把它下载,也不会比这样的传输更慢。

起初我屈服了,用U盘充当媒介,在两者间复制文件。并忍受了几天这样的速度。我Google了许久,尝试了一些解决方案,以下是我当时的一些笔记:

据说OSX 10.7后由于避免版权问题,没有使用Windows的smb协议实现,而用了自己写的替代方法,很不成熟,速度比PC间的共享慢很多。

有建议使用CIFS。在Finder里输入cmd+k,把smb的前缀替换为cifs,如:

cifs://192.168.1.102/backup

很遗憾,都行不通。我尝试过其他方法,如通过应用软件如飞鸽传书等来传输文件,依然慢得恐怖。

我感到有些绝望。难道在接下来的岁月里,我都要忍受1.5M/s的传输速度吗?绝不能如此。

没有用tcpdump/Wireshark来帮助诊断,而急匆匆跑去求救Google,我对自己有些失望。不过当时没有意识到自救的问题。从一开始就认为是个小问题,并深陷在各种失败的尝试之中。直到最后我翻开《Web性能》。

这本书第1章就开宗明义地说明了影响网络性能的2大因素:延迟和带宽。我知道延迟,也知道带宽。我知道带宽非常重要,也很贵(对购买带宽的公司而言)。但为何把延迟和带宽放一起,甚至还放在前面?

看完第1章的短短几页后,我感到毛骨悚然。如今这个年代,1M以下的带宽还真是罕见。我朋友笑话我还停留在20M的落后阶段,他早就上50M了。但即便是这样的带宽,即便看视频非常流畅,有时你仍会发现,打开某些网页有点卡。带宽反正越来越便宜了,为何不上更大的带宽呢?反正电信公司的人是这样说。

如果不是出自无知的话,电信公司的人一定是故意绝口不提延迟的事。延迟的本质是说,数据的传输是需要时间的,光从A地到B地需要时间,这个时间就是延迟。光速在真空中的传输速度约为300,000km/s(30万公里每秒)。我有一个Linode VPS在达拉斯,从北京到达拉斯的直线距离:11,233km,光从北京到达拉斯的时间为:11,233 / 300,000 = 0.0374s = 37.4 ms (37.4毫秒)。我多次ping过这个VPS,但并没有深刻的意识到这个东西是“延迟”。而这个“延迟”几乎无法优化。

B2D

我跳到第5章无线网络以及第6章Wifi,醍醐灌顶。首先,作者明确指出无线网络是不可靠的。我知道我的Mac和Win7都是通过无限网络传输的,但从未考虑过它们的可靠性问题。插上一块无线网卡就能上网,没有布线的烦恼,但是作者说:无线网络是不可靠的。我小吃一惊。然后看到Wifi的几个标准,也就是802.11 a/b/g/n/ac标准。我快速检查了自己的设备:

  • Mac。自带的无线网卡,支持802.11 a/b/g/n/ac所有标准。
  • Win7。台式机,TPLink无线网卡,802.11g 标准。
  • 路由器。TPLink无线路由器,支持“最新”的 802.11g标准。

失望,绝望,愤慨什么情绪都涌上来了。路由器是4-5年前购买的,网卡是3年多前购买的。它们真的是太老了。按书中所言,我认真地观察了Win7 ping路由器的输出,几乎达到恐怖的10ms延迟,且大概有1-2%的丢包率;同时期另一台PC通过网线连接路由器,ping的延迟小于1ms。

我立即购买了1个新路由器与1个新网卡,双双升级到802.11n标准。然后重新测速,大概稳定在4.5M/s-5.5M/s。可惜我现在的无线网络还运行在2.4GHz,还没有支持5GHz。但对这个结果已经比较满意了。

OSX

在我重新意识到“硬件”的存在后,改进了Linode VPS的部署。曾经我对速度的优化始终停留在软件上,以为软件就是一切。如今,我真正意识到硬件,地理位置对性能的影响。我对这些东西并非毫不知情,也知道要把内容(不仅仅是内容)部署到离用户更近的地方。然而,总有许多现实因素把你的双眼蒙蔽起来,让你看不清事实的真相。但这位好心的作者已经开门见山地指出了:关注带宽,但对Web而言更重要的是延迟。

enter image description here

最后仍要大力推荐此书。即使是第1章“延迟和带宽”,就值书的价钱了。更何况第5、6章带来的价值。话说到这里,我真得好好研究下其他章节呢。同时也但愿你也有颗好心脏来承接作者带给你的惊喜。