CloudFlare正式支持HTTP/2

早上还想着如何在VPS实现HTTP/2,晚上就收到CloudFlare的邮件--Your website just got faster with CloudFlare HTTP/2,原来CloudFlare的CDN服务正式全面支持HTTP/2,实在是太爽太激动了。

邮件全文如下:

As of this morning, CloudFlare has enabled HTTP/2 on your web property.

If your site was using SPDY before, you won’t have to make any changes to your code to stay up to date with modern browsers.
If your site wasn’t using SPDY, it is now dramatically faster.

HTTP/2 is the new and improved version of HTTP and is optimized for the modern website—making CSS, JavaScript, image assets and any other resources load simultaneously without complicated techniques like domain sharding and file concatenation.

如果以前在CloudFlare的CDN已经设置为SPDY,现在不需要做任何设置既已升级HTTP/2。HTTP/2是什么?那我还是引用维基百科的内容吧--HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议。HTTP/2的目标包括异步连接复用,头压缩和请求反馈管线化并保留与HTTP 1.1的完全语义兼容。

HTTP 2 相比 1.1 的更新大部分集中于:多路复用,HEAD 压缩,服务器推送,优先级请求。

对于HTTP/2,来自于Google的性能工程师Ilya Grigorik最近发布了一个PPT对此进行了详细的说明。在该呈现中,Ilya Grigorik首先提到了一组数据:目前平均每个Web页面大约会访问12个不同的主机,包含78个不同的请求,传输1232KB的数据,导致一个页面的渲染时间通常会在2.6s至5.6s之间。而在渲染占用的整个时间里面,网络大约占69.5%,JavaScript占6.6%,布局占5.1%,绘制占4.5%,因此网络传输的效率对整体性能有明显的影响。

Ilya Grigorik认为HTTP/1.1在性能方面有明显的缺陷,主要体现在以下几个方面:

a) 并行能力有限

每一个源最大只支持6个请求
管道在实际使用时不起作用
竞争性的TCP流,强制快速重传(Spurious retransmissions)
额外的握手、内存缓冲等

b) 客户端请求队列

队首阻塞
延迟的请求分发

c) 较高的协议负载

头信息和Cookies大约要800字节
HTTP元数据没有压缩
另外,HTTP/1.1只允许由客户端主动发起请求,服务端只能等待客户端发送请求,这对于满足预加载的现状是一种桎梏。

针对这些问题,虽然我们可以通过一些变通的方法进行处理,但是这不可避免的会引发另外的问题。例如,针对请求数的限制我们可以把多个小文件打包到一个大文件中,但是由于并不是每一个页面都需要所有的小文件,所以这样做会造成带宽的浪费。那么HTTP/2是否能够帮助我们解决这些问题呢?它都包含哪些内容呢?

实际上HTTP/2是为了在万维网上进行低延迟的数据传输而设计的一个协议,它提供了HTTP语义的传输优化,支持HTTP/1.1的所有核心特征,并且在其他方面做的更高效。在HTTP/2中,基本的协议单位是帧,每个帧都有不同的类型和用途。例如,报头(HEADERS)和数据(DATA)帧组成了基本的HTTP 请求和响应;其他帧,例如设置(SETTINGS)和推送承诺(PUSH_PROMISE)则用来实现HTTP/2的其他功能。

HTTP/2基于SPDY协议,充分解决了TCP连接的限制。它允许多个并发 HTTP 请求共用一个 TCP会话,而不是为每个请求单独开放连接,这样只需建立一个 TCP 连接就可以传送网页上所有资源,不仅可以减少消息交互往返的时间还可以避免创建新连接造成的延迟,使得 TCP 的效率更高。

针对只能由客户端发起请求的问题,HTTP/2添加了一种新的交互模式,即服务器能够通过复用一个以PUSH_PROMISE帧发送的请求来实现推送。而对于数据冗余问题,在HTTP/2中帧包含的HTTP报头字段是压缩的,同时它还舍弃掉了不必要的头信息,因此能显著地减少请求和响应的大小。

说了这么多,用一句话来总结:用了HTTP/2协议的网站,能显著地减少请求和响应的大小,显示的速度更快了。

以上部份内容引自:InfoQ

18 thoughts on “CloudFlare正式支持HTTP/2

  1. 小依

    好高大尚的协议哟,这个也是未来的趋势吧,我现在用的是七牛,可惜国内CDN支不支持HTTP/2先不说了,就连基本的SSL都不支持。

    回复
    1. 佐仔 文章作者

      如果你的主机是在国内,那就完全没有必要用到CDN,除非你的用户在国外。
      如果你的主机在国外(非香港、日本),那建议你还是用CloudFlare的CDN服务吧,当然,CloudFlare不单单是CDN,它更加好的功能是在网页优化,详细看我以下这篇文章:http://hst.liuyuxuan.com/6036.html

      至于国内的CDN服务主要是解决电信、联通、移动三大运营商之间的互联提速而已,至于其它功能只能呵呵。

      回复
    1. Shrek

      http2的目的很明确:异步连接复用、头压缩和请求反馈管线化。因为http2要有ssl,建立链接花成本,相同条件,http1.1 加 pagespeed 会比 http2 快一些,差距挺明显的,甚至不加pagespeed都要快一些。当然肯定是比 http1.1 加ssl快。

      回复
    1. 土木坛子

      CloudFlare这款CDN产品真是良心公司。全傻瓜化的设置,根本不需要任何命令行,并且大部分功能免费即可获得,还都采用了业界最新的技术,值得一入。

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注