HTTP/2 基础教程

内容简介

让网站和应用更快速、更简洁、更稳健,从而有效提升用户体验,这无疑是众多开发者梦寐以求的。然而互联网发展日新月异,HTTP/1.1 协议已经难以满足现今的需求。在众多 Web 性能提升方案中,HTTP/2 值得尝试。

本书是 HTTP/2 实用指南,介绍了 HTTP/2 的设计初衷和新特性,以及如何才能充分利用这些特性来打造高性能网站及应用。作者用定量分析方法,对比了不同网络环境下及不同浏览器上 HTTP/1.1 与 HTTP/2 的性能差异,并指出了网站迁移到 HTTP/2 需要注意的问题及对策。

本书主要内容:

  • HTTP 发展回顾——面临性能挑战,促使协议升级;
  • HTTP/2 概览——优点及迁移方法;
  • 既有的建议方案,以及提升 Web 性能的技巧;
  • HTTP/2 支持的浏览器、服务器、代理,以及内容分发网络;
  • 相比于 HTTP/1.1,采用 HTTP/2 的网站在性能上有何提升;
  • HTTP/2 对网络通信中一些具体问题的改进,如延迟、丢包、首字节时间等。
作者简介

Stephen Ludin,Akamai 公司 Web 性能部门 CAO,带领 Akamai 公司的 Foundry 团队,负责研发下一代 Web 技术。

Javier Garza,Akamai 公司高级企业架构师,专注于公司的主要客户及战略合作伙伴。他也是 Web 性能优化和 HTTP/2 的布道者,为 Akamai 的产品开发团队提供技术建议和客户反馈。

本书内容
中文版推荐序一

等待与希望

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 协议有丰富的开发经验,对工作也有高度的责任感,在繁忙的工作之余迅速完成了这本书的翻译。我在审校过程中,经常发现他们就书中的具体问题展开细致的讨论——因为不满足于“翻译文本”,更注重理解和思考背后的原理,所以发现了原书的若干错漏,也确定了很多符合中文开发者习惯的更容易理解的表达方式。我敢说,在今天的中文技术图书译者里,有这样认真精神的人,不超过十分之一。有这样的精神为支撑,图书的翻译质量是有保证的。

写完这篇文章的时候࿰

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值