http 2.0 前瞻

虽然http 2.0暂时还未大面积推广使用,但是大家已经看到了未来的光明。

与HTTP 1.1相比,主要区别包括

  • HTTP/2采用二进制格式而非文本格式
  • HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
  • 使用报头压缩,HTTP/2降低了开销
  • HTTP/2让服务器可以将响应主动“推送”到客户端缓存中

如果要部署 HTTP/2,首先需要将网站升级为 HTTPS

HTTP/2 协议本身并没有要求必须基于 TLS 部署,但当前所有浏览器均只支持 HTTP/2 Over TLS。这样做一方面更安全,另一方面利用 TLS 的加密机制可以更好地穿透网络中间节点。

HTTP/2支持程度

  • 目前支持 HTTP/2 的浏览器有 Chrome 41+、Firefox 36+、Safari 9+、Windows 10 上的 IE 11 和 Edge。
  • 服务器方面则有 F5、H2O、nghttp2 等数十种选择,各种语言实现的都有。
  • Nginx在2015年底也正式支持了
  • 基本上可以说通用了

落后的浏览器咋办?

不支持 HTTP/2 的浏览器还能正常访问么,答案是能, HTTP/2 有自己的协议协商机制,根据浏览器与服务器的支持情况,直接或协商使用http/2、或是降级使用http 1.1

调试

不同于 HTTP/1 的文本格式报文,HTTP/2 传输的都是二进制帧,调试起来要麻烦一些。
可以使用chrome扩展来协助调试

性能优化

服务端推送

HTTP/2 的多路复用特性,使得可以在一个连接上同时打开多个流,双向传输数据。Server Push,意味着服务端可以在发送页面 HTML 时主动推送其它资源,而不用等到浏览器解析到相应位置,发起请求再响应。另外,服务端主动推送的资源不是被内联在页面里,它们有自己独立的 URL,可以被浏览器缓存,当然也可以给其他页面使用。
服务端可以主动推送,客户端也有权利选择接收与否。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送 RST_STREAM 帧来拒收。
可以看到,HTTP/2 的 Server Push 能够很好地解决「如何让重要资源尽快加载」这个问题,一旦普及开来,可以取代前面介绍过的 HTTP/1 时代优化方案。

多路复用和头部压缩,减少带宽请求

总结

未来很美好,只是很遥远,估计http 1.1,还得10年才会退出历史舞台。

参考链接:
屈光宇博客-HTTP/2 资料汇总

分享
返回顶部