中文版推荐序一:等待与希望

中文版推荐序一:等待与希望

HTTP/2 已经渗入普通人的生活。如果你平时多个心眼,会发现很多网站已经悄然采用了 HTTP/2,享受了 HTTP/2 带来的诸般好处,甚至在一些技术大会上已经有相关的主题分享。

另一方面,大家对它的了解还相当粗浅。从我主持面试的经历来看,在我认为“应当了解 HTTP/2”的候选人——不管后端还是前端——当中,大部分人还处在“听说过有这么回事”的阶段,只有不到 20% 的候选人能够说出一点实质性的内容。如果继续问“HTTP/2 和 HTTPS 是什么关系”“从 HTTP/1.1 升级到 HTTP/2 有什么要注意的”“HTTP/2 为什么不叫 HTTP/2.0”,能答上来的人就寥寥无几了。

为什么会出现这种情况?我觉得和 HTTP/2 的中文资料匮乏有关。

纵观近年来的中文技术图书市场,无论是涉及的领域,还是作品的质量,都有明显的进步,众星捧月追求英文原版的情况已经是过去时。这对广大技术从业者来说,无疑是好事。但是另一方面,这种情况也间接造成了中英文技术资料的割裂:没有中文图书,大家最多看看网上的文章,没有那么多人愿意去研读英文图书了。关于 HTTP/2,到目前为止,还没有看到过任何中文图书。

难道是因为 HTTP/2 不重要吗?答案显然是否定的。

我最早进入互联网行业时,仅仅满足于“写好程序在网上能跑就行”。随着工作经历的丰富,我越来越深刻地意识到,只要你在这个行业从事技术,无论是前端还是后端,网络相关的基础知识这一课终究是躲不过去的。无论是服务器端要面对的大负载和高并发,还是客户端要面对的有限计算资源和弱网通信环境,最后都离不开对网络的深入理解。

对 TCP/IP 的了解越深,我们往往越会感叹其层次设计的巧妙。各种新出现的优化并不会破坏原有的体系结构。但是,对 HTTP 的了解越深,我们往往越会感叹它的过时——Web 的发展太迅猛了,相比之下,定稿于 1999 年的 HTTP/1.1 时常让人以为是“上古卷轴”。所以,大家才会想出各种“优化黑魔法”来避开 HTTP/1.1 的各种限制和缺陷。域名拆分、资源域名分离、精灵图(用 CSS 选择大拼图中的小区域)等,都是如此。

不幸的是,这些“高招”往往并非标准统一的解决方案,所以并不能直接放心享用。和 CDN 厂商打过交道就会知道,网络设备成千上万,规范的实现程度也参差不齐,由此产生形形色色的问题,简直让人不胜其烦。再加上各种“优化黑魔法”,只会让本来杂乱的网络世界变得更加混沌。除非自己技术实力足够强,否则只能望洋兴叹。

有没有造福大家的统一的解决办法? Google 先揭竿而起,发明制订了 SPDY 规范。继而大家才发现,原来所有人都在翘首期盼新的 HTTP 协议。于是,顺理成章地,HTTP/2 诞生了。虽然制订过程是漫长而痛苦的,但首部压缩、分帧传输、服务端推送等新特性,直击 HTTP/1.1 这种“古董协议”的痛点,让广大开发者大呼过瘾,迫不及待想要投入 HTTP/2 的怀抱。

然而,天下没有免费的午餐。要想享受 HTTP/2 带来的诸般好处,“简单升级”协议是行不通的。没错,HTTP/1.1 显得简单直白,相当一部分的开发人员甚至把它理解为一问一答的简单通信模型(和编程语言中的方法调用一样),也不妨碍自己的开发。可惜,HTTP/2 不能这么玩。首部压缩等应用层特性或许还很好懂,但是,新出现的帧传输层绝对要花一番功夫才能理解。不理解这些新特性背后的原理,许多时候就没法调试;不能调试,很多问题就束手无策;束手无策,就无法享受新技术带来的诸般好处。

所幸,《HTTP/2 基础教程》中文版面世了。在我看来,这本书相当适合作为广大开发人员了解 HTTP/2 的资料,大家也确实需要这样一本书,理由如下。

第一,它的范围足够广,HTTP/2 中有价值的新特性基本都有覆盖,不是就概念而概念,而是会讲解各种新特性适合哪些场景以及不适合哪些场景。比如,如果你的网站大量引用第三方资源,那么域名拆分能带来的获益就相当小。

第二,它的编排很用心,不是单纯罗列 HTTP/2 的好处,而是通过与 HTTP/1.1 的对比加以讲解,更有一章专门讲解从 HTTP/1.1 升级到 HTTP/2 的一般过程,以前做的优化哪些必须变更、哪些可以保留,翔实可靠。比如,精灵图这种优化手段依然有助于提升响应速度,但会丧失缓存的便利性。

第三,它不是简单通过定性分析来论证 HTTP/2 的好处,而是大量使用了定量分析的方法。 HTTP/2 比 HTTP/1.1 要好,到底好多少,提升的幅度会受哪些因素的影响?书中对这类问题都给出了严谨详细的分析。我读了这本书才知道,光在光纤中的传输速度只有真空中的 2/3。

第四,作为一本优秀的技术图书,其中的分析和思考会让读者在今后的工作中获益更多。本书不仅告诉读者 HTTP/2 的首部压缩采用的是 HPACK 算法,还讲解了为什么采用 HPACK 而不是沿用 SPDY 的 gzip 算法。我相信,如果了解了 CRIME 漏洞的原理,我们在今后的工作中会有更多样的思考角度,以及更完善的安全意识。

《HTTP/2 基础教程》的两位译者罗正龙、郑维智都是沪江优秀的前端开发工程师,本身就对 HTTP 协议有丰富的开发经验,对工作也有高度的责任感,在繁忙的工作之余迅速完成了这本书的翻译。我在审校过程中,经常发现他们就书中的具体问题展开细致的讨论——因为不满足于“翻译文本”,更注重理解和思考背后的原理,所以发现了原书的若干错漏,也确定了很多符合中文开发者习惯的更容易理解的表达方式。我敢说,在今天的中文技术图书译者里,有这样认真精神的人,不超过十分之一。有这样的精神为支撑,图书的翻译质量是有保证的。

写完这篇文章的时候,我再次确认了一番,目前中文技术图书里确实还没有任何一本 HTTP/2 的专著。如果没有估计错误,《HTTP/2 基础教程》中文版的出版只会落后英文原版半年左右,不出意外的话,它应当算中文世界里第一本 HTTP/2 的专著了。我相信,它的质量不会辜负“第一”的名次。

大仲马说过,人类的一切智慧都包含在两个词里——等待与希望。你是不是深深被 HTTP/1.1 所困扰,面对 HTTP/2 又有困惑?那好,现在《HTTP/2 基础教程》终于和读者见面了,让我们共同期待 HTTP/2 的美好未来吧。

——余晟,技术图书翻译写作爱好者,现任沪江教育集团技术中心研发总监

目录