虽然 http 2.0 暂时还未大面积推广使用,但是大家已经看到了未来的光明。
HTTP/2 协议本身并没有要求必须基于 TLS 部署,但当前所有浏览器均只支持 HTTP/2 Over TLS。这样做一方面更安全,另一方面利用 TLS 的加密机制可以更好地穿透网络中间节点。
不支持 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 年才会退出历史舞台。

