Web性能权威指南PDF电子书
本书是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物。
本书目标是涵盖 Web 开发者技术体系中应该掌握的所有网络及性能优化知识。全书以性能优化为主线,从 TCP、UDP 和 TLS 协议讲起,解释了如何针对这几种协议和基础设施来优化应用。
然后深入探讨了无线和移动网络的工作机制。最后,揭示了 HTTP 协议的底层细节,同时详细介绍了 HTTP 2.0、XHR、SSE、WebSocket、WebRTC 和 DataChannel 等现代浏览器新增的具有革命性的新能力。
本书适合所有 Web 应用及站点开发人员阅读,包括但不限于前端、后端、运维、大数据分析、UI/UX、存储、视频、实时消息,以及性能工程师。
目录
Steve Souders 推荐序 ................................................................................................................... XIII
前言....................................................................................................................................................... XV
第一部分 网络技术概览
第 1 章 延迟与带宽 ....................................................................................................3
1.1 速度是关键 .................................................................................................................................3
1.2 延迟的构成 .................................................................................................................................4
1.3 光速与传播延迟 .........................................................................................................................6
1.4 延迟的最后一公里 .....................................................................................................................7
1.5 网络核心的带宽 .........................................................................................................................8
1.6 网络边缘的带宽 .........................................................................................................................9
1.7 目标:高带宽和低延迟 ...........................................................................................................10
第 2 章 TCP 的构成 ................................................................................................. 13
2.1 三次握手 ...................................................................................................................................14
2.2 拥塞预防及控制 .......................................................................................................................16
2.2.1 流量控制 ......................................................................................................................16
2.2.2 慢启动 ..........................................................................................................................18
2.2.3 拥塞预防 ......................................................................................................................24
2.3 带宽延迟积 ...............................................................................................................................25
2.4 队首阻塞 ...................................................................................................................................27
2.5 针对 TCP 的优化建议..............................................................................................................28
2.5.1 服务器配置调优 ..........................................................................................................29
2.5.2 应用程序行为调优 ......................................................................................................30
VI | 目录
2.5.3 性能检查清单 ..............................................................................................................30
第 3 章 UDP 的构成................................................................................................. 31
3.1 无协议服务 ...............................................................................................................................32
3.2 UDP 与网络地址转换器 .........................................................................................................34
3.2.1 连接状态超时 ..............................................................................................................35
3.2.2 NAT 穿透......................................................................................................................36
3.2.3 STUN、TURN 与 ICE.................................................................................................37
3.3 针对 UDP 的优化建议 .............................................................................................................39
第 4 章 传输层安全(TLS)...................................................................................... 41
4.1 加密、身份验证与完整性 .......................................................................................................42
4.2 TLS 握手 ...................................................................................................................................44
4.2.1 应用层协议协商(ALPN)..........................................................................................46
4.2.2 服务器名称指示(SNI)..............................................................................................47
4.3 TLS 会话恢复 ...........................................................................................................................48
4.3.1 会话标识符 ..................................................................................................................48
4.3.2 会话记录单 ..................................................................................................................49
4.4 信任链与证书颁发机构 ...........................................................................................................50
4.5 证书撤销 ...................................................................................................................................52
4.5.1 证书撤销名单(CRL).................................................................................................53
4.5.2 在线证书状态协议(OCSP)......................................................................................54
4.6 TLS 记录协议 ...........................................................................................................................54
4.7 针对 TLS 的优化建议 ..............................................................................................................55
4.7.1 计算成本 ......................................................................................................................55
4.7.2 尽早完成(握手)........................................................................................................56
4.7.3 会话缓存与无状态恢复 ..............................................................................................58
4.7.4 TLS 记录大小 ..............................................................................................................59
4.7.5 TLS 压缩 ......................................................................................................................60
4.7.6 证书链的长度 ..............................................................................................................61
4.7.7 OCSP 封套 ...................................................................................................................62
4.7.8 HTTP 严格传输安全(HSTS)....................................................................................62
4.8 性能检查清单 ...........................................................................................................................63
4.9 测试与验证 ...............................................................................................................................64
第二部分 无线网络性能
第 5 章 无线网络概览 .............................................................................................. 69
目录 | VII
5.1 无所不在的连接 .......................................................................................................................69
5.2 无线网络的类型 .......................................................................................................................70
5.3 无线网络的性能基础 ...............................................................................................................71
5.3.1 带宽 ..............................................................................................................................71
5.3.2 信号强度 ......................................................................................................................74
5.3.3 调制 ..............................................................................................................................75
5.4 测量现实中的无线性能 ...........................................................................................................76
第 6 章 Wi-Fi............................................................................................................ 79
6.1 从以太网到无线局域网 ...........................................................................................................79
6.2 Wi-Fi 标准及功能 ....................................................................................................................81
6.3 测量和优化 Wi-Fi 性能 ...........................................................................................................81
6.4 针对 Wi-Fi 的优化建议 ...........................................................................................................84
6.4.1 利用不计流量的带宽 ..................................................................................................84
6.4.2 适应可变带宽 ..............................................................................................................85
6.4.3 适应可变的延迟时间 ..................................................................................................86
第 7 章 移动网络...................................................................................................... 87
7.1 G 字号移动网络简介 ...............................................................................................................87
7.1.1 最早提供数据服务的 2G.............................................................................................88
7.1.2 3GPP 与 3GPP2 ...........................................................................................................89
7.1.3 3G 技术的演进 ............................................................................................................91
7.1.4 IMT-Advanced 的 4G 要求..........................................................................................93
7.1.5 长期演进(LTE).........................................................................................................94
7.1.6 HSPA+ 推进世界范围内的 4G 普及 ..........................................................................95
7.1.7 为多代并存的未来规划 ..............................................................................................96
7.2 设备特性及能力 .......................................................................................................................97
7.3 无线电资源控制器(RRC).....................................................................................................99
7.3.1 3G、4G 和 Wi-Fi 对电源的要求 ..............................................................................101
7.3.2 LTE RRC 状态机 .......................................................................................................102
7.3.3 HSPA 与 HSPA+(UMTS)RRC 状态机 ................................................................104
7.3.4 EV-DO(CDMA)RRC 状态机 ................................................................................106
7.3.5 低效率的周期性传输 ................................................................................................107
7.4 端到端的运营商架构 .............................................................................................................108
7.4.1 无线接入网络(RAN)..............................................................................................108
7.4.2 核心网络 .................................................................................................................... 110
7.4.3 回程容量与延迟 ........................................................................................................ 112
7.5 移动网络中的分组流 ............................................................................................................. 113
7.5.1 初始化请求 ................................................................................................................ 113
VIII | 目录
7.5.2 入站数据流 ................................................................................................................ 116
7.6 异质网络(HetNet)............................................................................................................... 117
7.7 真实的 3G、4G 和 Wi-Fi 性能 .............................................................................................. 119
第 8 章 移动网络的优化建议.................................................................................. 121
8.1 节约用电 .................................................................................................................................122
8.2 消除周期性及无效的数据传输 .............................................................................................124
8.3 预测网络延迟上限 .................................................................................................................126
8.3.1 考虑 RRC 状态切换 ..................................................................................................127
8.3.2 解耦用户交互与网络通信 ........................................................................................128
8.4 面对多网络接口并存的现实 .................................................................................................128
8.5 爆发传输数据并转为空闲 .....................................................................................................130
8.6 把负载转移到 Wi-Fi 网络 .....................................................................................................131
8.7 遵从协议和应用最佳实践 .....................................................................................................131
第三部分 HTTP
第 9 章 HTTP 简史 ................................................................................................ 135
9.1 HTTP 0.9:只有一行的协议 .................................................................................................135
9.2 HTTP 1.0:迅速发展及参考性 RFC ....................................................................................136
9.3 HTTP 1.1:互联网标准 .........................................................................................................138
9.4 HTTP 2.0:改进传输性能 .....................................................................................................141
第 10 章 Web 性能要点 ......................................................................................... 143
10.1 超文本、网页和 Web 应用..................................................................................................144
10.2 剖析现代 Web 应用..............................................................................................................146
10.2.1 速度、性能与用户期望 .........................................................................................147
10.2.2 分析资源瀑布 .........................................................................................................148
10.3 性能来源:计算、渲染和网络访问 ...................................................................................151
10.3.1 更多带宽其实不(太)重要 .................................................................................152
10.3.2 延迟是性能瓶颈 .....................................................................................................152
10.4 人造和真实用户性能度量 ...................................................................................................154
10.5 针对浏览器的优化建议 .......................................................................................................157
第 11 章 HTTP 1.x ................................................................................................. 161
11.1 持久连接的优点 ...................................................................................................................163
11.2 HTTP 管道 ............................................................................................................................165
11.3 使用多个 TCP 连接 ..............................................................................................................169
目录 | IX
11.4 域名分区 ...............................................................................................................................171
11.5 度量和控制协议开销 ...........................................................................................................173
11.6 连接与拼合 ...........................................................................................................................174
11.7 嵌入资源 ...............................................................................................................................177
第 12 章 HTTP 2.0................................................................................................. 179
12.1 历史及其与 SPDY 的渊源...................................................................................................180
12.2 走向 HTTP 2.0 ......................................................................................................................181
12.3 设计和技术目标 ...................................................................................................................182
12.3.1 二进制分帧层 .........................................................................................................183
12.3.2 流、消息和帧 .........................................................................................................184
12.3.3 多向请求与响应 .....................................................................................................185
12.3.4 请求优先级 .............................................................................................................186
12.3.5 每个来源一个连接 .................................................................................................188
12.3.6 流量控制 .................................................................................................................189
12.3.7 服务器推送 .............................................................................................................190
12.3.8 首部压缩 .................................................................................................................192
12.3.9 有效的 HTTP 2.0 升级与发现................................................................................194
12.4 二进制分帧简介 ...................................................................................................................196
12.4.1 发起新流 .................................................................................................................197
12.4.2 发送应用数据 .........................................................................................................198
12.4.3 HTTP 2.0 帧数据流分析.........................................................................................199
第 13 章 优化应用的交付 ....................................................................................... 201
13.1 经典的性能优化最佳实践 ...................................................................................................203
13.1.1 在客户端缓存资源 .................................................................................................204
13.1.2 压缩传输的数据 ....................................................................................................205
13.1.3 消除不必要的请求字节 .........................................................................................206
13.1.4 并行处理请求和响应 .............................................................................................207
13.2 针对 HTTP 1.x 的优化建议 .................................................................................................208
13.3 针对 HTTP 2.0 的优化建议 .................................................................................................209
13.3.1 去掉对 1.x 的优化 ..................................................................................................209
13.3.2 双协议应用策略 .....................................................................................................210
13.3.3 1.x 与 2.0 的相互转换 ............................................................................................212
13.3.4 评估服务器质量与性能 .........................................................................................213
13.3.5 2.0 与 TLS ...............................................................................................................214
13.3.6 负载均衡器、代理及应用服务器 .........................................................................215
X | 目录
第四部分 浏览器 API 与协议
第 14 章 浏览器网络概述 ....................................................................................... 219
14.1 连接管理与优化 ...................................................................................................................220
14.2 网络安全与沙箱 ...................................................................................................................222
14.3 资源与客户端状态缓存 .......................................................................................................222
14.4 应用 API 与协议 ..................................................................................................................223
第 15 章 XMLHttpRequest .................................................................................... 225
15.1 XHR 简史 .............................................................................................................................226
15.2 跨源资源共享(CORS)......................................................................................................227
15.3 通过 XHR 下载数据 ............................................................................................................230
15.4 通过 XHR 上传数据 ............................................................................................................231
15.5 监控下载和上传进度 ...........................................................................................................233
15.6 通过 XHR 实现流式数据传输 ............................................................................................234
15.7 实时通知与交付 ...................................................................................................................236
15.7.1 通过 XHR 实现轮询 ...............................................................................................237
15.7.2 通过 XHR 实现长轮询 ...........................................................................................238
15.8 XHR 使用场景及性能 .........................................................................................................240
第 16 章 服务器发送事件 ....................................................................................... 243
16.1 EventSource API ..................................................................................................................243
16.2 Event Stream 协议 ................................................................................................................245
16.3 SSE 使用场景及性能 ...........................................................................................................248
第 17 章 WebSocket.............................................................................................. 251
17.1 WebSocket API......................................................................................................................252
17.1.1 WS 与 WSS .............................................................................................................253
17.1.2 接收文本和二进制数据 .........................................................................................253
17.1.3 发送文本和二进制数据 .........................................................................................255
17.1.4 子协议协商 .............................................................................................................256
17.2 WebSocket 协议 ....................................................................................................................257
17.2.1 二进制分帧层 .........................................................................................................258
17.2.2 协议扩展 .................................................................................................................260
17.2.3 HTTP 升级协商 ......................................................................................................261
17.3 WebSocket 使用场景及性能 ................................................................................................264
17.3.1 请求和响应流 .........................................................................................................264
17.3.2 消息开销 .................................................................................................................265
目录 | XI
17.3.3 数据效率及压缩 .....................................................................................................266
17.3.4 自定义应用协议 .....................................................................................................266
17.3.5 部署 WebSocket 基础设施 .....................................................................................267
17.4 性能检查表 ...........................................................................................................................269
第 18 章 WebRTC ................................................................................................. 271
18.1 标准和 WebRTC 的发展 ......................................................................................................272
18.2 音频和视频引擎 ...................................................................................................................272
18.3 实时网络传输 .......................................................................................................................276
18.4 建立端到端的连接 ...............................................................................................................280
18.4.1 发信号和协商会话 .................................................................................................280
18.4.2 会话描述协议(SDP)............................................................................................282
18.4.3 交互连接建立(ICE).............................................................................................285
18.4.4 增量提供(Trickle ICE).........................................................................................288
18.4.5 跟踪 ICE 收集和连接状态 .....................................................................................289
18.4.6 完整的示例 .............................................................................................................291
18.5 交付媒体和应用数据 ...........................................................................................................295
18.5.1 通过 DTLS 实现安全通信 .....................................................................................296
18.5.2 通过 SRTP 和 SRTCP 交付媒体 ............................................................................298
18.5.3 通过 SCTP 交付应用数据 ......................................................................................301
18.6 DataChannel ..........................................................................................................................305
18.6.1 设置与协商 .............................................................................................................307
18.6.2 配置消息次序和可靠性 .........................................................................................309
18.6.3 部分可靠交付与消息大小 ..................................................................................... 311
18.7 WebRTC 使用场景及性能 ...................................................................................................312
18.7.1 音频、视频和数据流 .............................................................................................312
18.7.2 多方通信架构 .........................................................................................................313
18.7.3 基础设施及容量规划 .............................................................................................314
18.7.4 数据效率及压缩 .....................................................................................................315
18.8 性能检查表 ...........................................................................................................................316
关于封面 .................................................................................................................. 318