HTTP/2:期待已久的后续版本
已准备好提高速度?
Microsoft 正在 Internet Explorer 中推出一项重要支持,那就是自 1999 年以来首次对超文本传输协议进行重大的重新设计。这已经过去很久了,现在是时候了。
虽然近年来人们做了大量工作来简化 Web 体系结构,但没有任何工作涉及到 HTTP/2 规模。作为 IETF HTTPbis 工作组的一分子,我们一直在努力帮助开发这种新型、高效且兼容的标准。它因为一些显而易见的原因被称为 HTTP/2 – 现在它已可供使用,内置于从 Windows 10 Technical Preview 开始的新 Internet Explorer 中。
您可以通过查看 Microsoft Open Technologies HTTP/2 页面,大致了解一下我们与 HTTPbis 工作小组一起完成的工作。
为什么 Internet Explorer 率先实现 HTTP/2?
在越来越趋于实时化、移动性越来越高的世界里,性能至关重要 – 即便是看起来极其细微的提升也会带来明显改观。例如,一项必应调查发现,页面加载时间增加 10 毫秒会导致网站每年损失 25 万美元的收入;增加 100 毫秒 – 注意这相当于人眨眼速度的三分之一 – 会导致三个月的工作前功尽弃,哪怕这三个月您一直在通过更好的搜索结果相关性改善用户访问量。调查表明,交易网页响应速度中 100 毫秒的延迟会导致用户放弃搜索,从而导致大型网络零售商损失多达 1% 的销售额。因此,该工作小组所做的工作会产生切实的经济影响。
我们往昔的做法有什么错?
大多数情况下,今天的网页加载方式与使用 800 x 600 像素显示器的阶段基本相同。当然,今天的网络是一个节奏更快的环境,但它还可以变得更快且资源效率更高。
如今,构建网页仍然需要在浏览器和服务器之间进行大量单独的查询,每次单独的调用都必须等待服务器做出响应,然后才能发送下一个调用。当然,您可以打开更多独立的并行连接,但这仍然会限制可以同时请求的项目数。它还会规定响应顺序,使服务器无法优化响应。
那么 HTTP/2 有何不同?
HTTP/2 可以更快、更高效地提供网页元素,充分利用所有可用带宽。凭借长时间连接和多路复用(协议将多个请求组合到一个连接上的能力),会有更多网页项目更快到达。实验性 HTTP/2 功能(例如服务器推送和请求依赖项)将来还可以进一步提高 Web 性能。
这对于开发人员意味着什么?
HTTP/2 在设计之初就考虑到了与 HTTP/1.1 的向后兼容性。这意味着,HTTP 库的开发人员不必更改 API,使用这些库的开发人员也不必更改他们的应用程序代码。这是一项巨大的优势:开发人员可以向前推进,而不必花几个月时间来更新之前的工作。
网络方面如何?安全性方面呢?
更少、频率更低的连接还意味着 HTTP/2 可以减轻网络压力 – 考虑到当今 Web 的规模,这可以显著提高网络效率,特别是移动网络。鉴于 HTTP/2 的高效连接模式,向网站中添加 TLS 的性能影响将会减少,为更多管理员打开了向其网站中添加 TLS 的大门。
何时可以获得它?
HTTP/2 支持在 Windows 10 Technical Preview 的 IE 中提供。IE 的 HTTP/2 工作实际上在 Windows 和 Windows Phone 8.1 中就已经开始了,当时我们添加了实验性的 SPDY 3.0 协议。这使我们有机会获得多路复用 HTTP 协议的经验,并帮助我们朝 HTTP/2 方向推进,现在其已成为一项行业标准。
SPDY 为 HTTP/2 标准提供了一个不错的起点,但它是实验性协议,不适合长期采用。随着 HTTP/2 的发展,我们会在所有将来的 IE 版本中删除对 SPDY 的支持。当前使用 SPDY 的网站和应用程序应可以通过极少的更改,或者根本不需要更改,即可迁移到 HTTP/2。
开发人员和网站所有者应该如何准备应对这一变化?
- 运行 Windows 10 Technical Preview 版本的 IE
- 启动开发人员工具并打开网络跟踪
- 加载支持 HTTP/2 draft-14 的网站。每个实施程序页面上会列出一些不错的网站,页面网址为:https://github.com/http2/http2-spec/wiki/Implementations
- 观察 HTTP/2 数据包流
Technical Preview 也支持 HTTP/2 服务器。这意味着您可以在 IIS 中创建网站并端到端地测试内容。注意:在 Technical Preview 版本的 IE 和 IIS 中,HTTP/2 上不支持不安全的连接(即 HTTP),只支持安全连接(即 HTTPS)。
请体验我们的 HTTP/2 实现并对其进行全面测试!您可以通过 @IEDevChat 或 Connect 提供您的反馈。
— 高级项目经理 Rob Trace
— 高级项目经理 David Walp