# 第九章 HTTP2
# HTTP/2 - 为了更优异的表现
这些年来,网页愈渐变得的复杂,甚至演变成了独有的应用,可见媒体的播放量,增进交互的脚本大小也增加了许多:更多的数据通过 HTTP 请求被传输。HTTP/1.1 链接需要请求以正确的顺序发送,理论上可以用一些并行的链接(尤其是 5 到 8 个),带来的成本和复杂性堪忧。比如,HTTP 管线化(pipelining)就成为了 Web 开发的负担。
在 2010 年到 2015 年,谷歌通过实践了一个实验性的 SPDY 协议,证明了一个在客户端和服务器端交换数据的另类方式。其收集了浏览器和服务器端的开发者的焦点问题。明确了响应数量的增加和解决复杂的数据传输,SPDY 成为了 HTTP/2 协议的基础。
HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。
HTTP/2 在 HTTP/1.1 有几处基本的不同:
- HTTP/2 是二进制协议而不是文本协议。不再可读,也不可无障碍的手动创建,改善的优化技术现在可被实施。
- 这是一个复用协议。并行的请求能在同一个链接中处理,移除了 HTTP/1.x 中顺序和阻塞的约束。
- 压缩了 headers。因为 headers 在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。
- 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求。
# HTTP/2.0 的 7 项技术及讨论
应用 | 技术实现 |
---|---|
压缩 | SPDY,Friendly |
多路复用 | SPDY |
TLS 义务化 | Speed + Mobility |
协商 | Speed + Mobility,Friendly |
Client Pull/Server Push | Speed + Mobility |
流量控制 | SPDY |
WebSocket | Speed + Mobility |
# HTTP/2 进化
随着 HTTP/2.的发布,就像先前的 HTTP/1.x 一样,HTTP 没有停止进化,HTTP 的扩展性依然被用来添加新的功能。特别的,我们能列举出 2016 年里 HTTP 的新扩展:
- CDN 对 Alt-Svc 的支持允许了给定资源的位置和资源鉴定,允许了更智能的 CDN 缓冲机制。
- Cookie 在 Cookie 头中引入安全相关的的前缀,现在帮助保证一个安全的 cookie 没被更改过