前言

前言

HTTP/2,简称 h2,是万维网(World Wide Web)所使用的 HTTP 网络协议的一个重大修订版本,其目的是提升加载 Web 内容时的感知性能。

自从 1999 年 HTTP/1.1(h1)通过以来,Web 发生了翻天覆地的变化。最早大小只有几千字节、包含资源只有个位数、主要基于文本的网页,如今已发展为平均大小超过 2MB1、包含资源数平均为 140 的富媒体网站。然而,用来传输 Web 内容的 HTTP 协议这些年并没有什么变化。于是一个新的工种出现了:Web 性能专家,他们精于发掘变通办法,在原有协议上提升网页加载速度。大家对性能的期望也改变了——在 20 世纪 90 年代后期,大家愿意为一个页面等上 7 秒,而技术和市场调研公司 Forrester Research 在 2009 年的一项研究中发现,在线购物者期望单个页面能在 2 秒内完成加载,其中很大一部分用户会放弃加载时间超过 3 秒的页面。近期 Google 的一项研究表明,甚至 400 毫秒(一眨眼的时间)的延迟,都可能降低人们的搜索意愿。

1http://httparchive.org/trends.php?s=Top1000&minlabel=Oct+15+2015&maxlabel=Oct+1+2016

这就是 h2 诞生的原因——该协议可以更好地适应如今的复杂页面,同时又不牺牲速度。 HTTP/2 的应用在不断增多,因为越来越多的网站管理员意识到,他们可以借此花很小的成本来提高他们网站的感知性能。

我们每天都在使用 h2——它支撑了若干最流行的网站,如 Facebook、Twitter、Google 和 Wikipedia——但很多人并不了解它。我们的目标是讲解 h2 的原理及其性能优势,这样你就可以充分利用它。

本书目标读者

不管你在工作中扮演什么角色,只要你的工作涉及网站生命周期的任意部分,本书就会对你有所帮助。本书的目标读者是网站开发和运维人员,以及那些正考虑要实现 h2 或者希望了解 h2 如何工作的人。

阅读本书要求你熟悉 Web 浏览器、Web 服务器、网站和 HTTP 协议的基础知识。

本书涵盖范围

本书的目标是讲解 h2,并帮你充分利用新版的 HTTP 协议。本书不是一份针对所有 h2 客户端、服务器、调试工具、性能基准测试的全面指南。本书虽然是为不太熟悉 HTTP/2 的人而准备的,但专家没准儿也会觉得这是份称手的资源。

推荐资源

你可以浏览本书在 O'Reilly 网站上的页面(http://shop.oreilly.com/product/0636920052326.do)获取更多信息。此外,我还推荐以下这些书。

  • 《高性能网站建设指南》,作者 Steve Souders,前端工程师的基础知识。
  • 《高性能网站建设进阶指南》,作者 Steve Souders,Web 开发者的性能最佳实践。
  • 《Web 性能权威指南》2,作者 Ilya Grigorik,快速上手指南,关于各种网络、传输协议、应用协议,以及浏览器中可用的 API。
  • 《WebPageTest 应用指南》,作者 Rick Viscomi、Andy Davies 和 Marcel Duran,介绍 WebPagetest 的基础和高级应用,WebPagetest 是一个用以优化网站的免费性能检测工具。
  • High Performance Mobile Web3,作者 Maximiliano Firtman,介绍如何优化移动网站和移动应用性能。
  • http2 explainedhttps://daniel.haxx.se/http2/),作者 Daniel Stenberg。

2该书已由人民邮电出版社出版,书号:9787115349101。——编者注

3该书中文版即将由人民邮电出版社出版,暂名《高性能移动 Web 开发》,参见 http://www.ituring.com.cn/book/1911。——编者注

排版约定

本书使用了下列排版约定。

  • 黑体

    表示新术语或重点强调的内容。

  • 等宽字体(constant width)

    表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

  • 加粗等宽字体(constant width bold

    表示应该由用户输入的命令或其他文本。

  • 等宽斜体(constant width italic

    表示应该由用户输入的值或根据上下文确定的值替换的文本。

 该图标表示提示或建议。

 

 该图标表示一般注记。

 

 该图标表示警告或警示。

使用代码示例

补充材料(代码示例、练习等)可以从 https://github.com/oreillymedia/learning-http2 下载。

本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发 O'Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和 ISBN。比如:“Learning HTTP/2 by Stephen Ludin and Javier Garza (O'Reilly). Copyright 2017 Stephen Ludin and Javier Garza, 978-1-491-96244-2.”

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@oreilly.com 与我们联系。

O'Reilly Safari

Safari(前身为 Safari Books Online)是为企业、政府、教育机构和个人提供的会员制的培训和参考平台。

会员可以观看和收听来自 250 多家出版商的上千种图书、培训视频、学习路径、互动教程和推荐歌单。这些出版商包括 O'Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology,等等。

欲知更多信息,请访问 https://www.safaribooksonline.com/

联系我们

请把对本书的评价和问题发给出版社。美国:

  O'Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 95472

中国:

  北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

  奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:http://shop.oreilly.com/product/0636920052326.do

对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com。

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

  http://www.oreilly.com

我们在 Facebook 的地址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia

致谢

我们要感谢 Akamai 的 h2 核心团队和 Moritz Steiner(Akamai 的研究员,也是 Foundry 团队的一员,与 Stephen 共同撰写了几篇有关 h2 的论文);Pierre Lermant(感谢他的幽默和对细节的关注,也感谢他审阅本书并贡献了部分内容);Martin Flack(也是 Akamai Foundry 团队的一员,时常会提出颇具启发意义的 Lisp 实现);Jeff Zitomer(感谢他的支持、鼓励,以及富有感染力的微笑);Mark Nottinghan(感谢他对 h2 协议的贡献);Pat Meenan(感谢他为 Webpagetest.org 做出的数不清的贡献,这可能是测试 Web 性能最棒的免费工具了);Andy Davies(本书中广泛使用的工具 WebPagetest Bulk Tester 就是他开发的)。

感谢本书的编辑 Brian Anderson、Virginia Wilson 和 Dawn Schanafelt,有了他们,一切才变得简单。还要感谢为本书提供反馈和意见的每一位 h2 专家:Ilya Grigorik、Patrick McManus、Daniel Stenberg、Ragnar Lonn、Colin Bendell、Mark Nottingham、Hooman Beheshti、Rob Trace、Tim Kadlec 以及 Pat Meenan。

Javier Garza

首先,我要感谢妻子 Tina 的支持、鼓励和理解。感谢我的孩子们(Keona、Diego 和 Lani),在我花费无数个夜晚和周末以及大段的暑假时间写作本书的时候,他们一如既往地爱着我。感谢我的经理 Aditi 和 Austin,在工作非常紧张的情况下,依然鼓励我写作本书。

Stephen Ludin

我最想感谢的是身边人的耐心。我家人的耐心——感谢 Sarah、Tomas 和 Liam 容忍我以及令人抓狂的出版过程。在写作过程中,他们的支持是无价的。感谢我的雇主 Akamai 允许我在工作非常忙的时候写这本书。感谢 O'Reilly 工作人员的耐心,他们非常理解 O'Reilly 作者平日里的工作已经非常繁忙,只能利用零散的碎片时间来写作。最后,感谢我父母的耐心,他们的付出我无以为报,唯有珍惜当下——在我 9 岁的时候,父亲带回家一台 Atari 800,那时他是否知道,这使我从此走上了一条路,并且如今依然奋力前行。

电子版

扫描如下二维码,即可购买本书电子版。

{%}

目录