HTTPS、SPDY和HTTP/2的性能比较
2015-11-12 14:19
344 查看
Firefox 35已于最近发布,新版本默认支持HTTP/2协议(草案14版本),针对该升级HttpWatch也发布了相应的更新,使其能够在Firefox中支持HTTP/2,由于Google的web服务器现在能够同时支持HTTP/2草案14版本和SPDY协议,使得HttpWatch能够在同样的Web页面上对比HTTPS、SPDY和HTTP/2的性能。
整个性能测试包含4个场景,使用的软件为Firefox和HttpWatch,测试网页为Google UK首页,比较的协议包括原生HTTPS、SPDY/3.1和HTTP/2协议,同时每一个测试都是在没有浏览器缓存的Firefox实例上执行的,虽然这些测试非常简单,页面也不复杂,但是这并不影响三种不同协议之间重大差异的比较。
第一个测试通过一个没有内容的请求生成的头信息的大小来查看三种协议的不同:
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202000.jpg)
其中,“Sent”列表示请求头的大小,“Received”列表示响应头的大小,结果显示,使用HPACK算法的HTTP/2协议头信息最小。
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202001.jpg)
对于文本资源的请求,结果如下:
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202002.jpg)
结果显示,对于图片HTTP/2协议的请求和响应信息都最小,而对于文本资源,虽然HTTP/2的请求信息依然最小,但是响应信息却比SPDY协议稍大一点。究其原因,这可能是由添加到HTTP/2数据帧中的可选内边距字节造成的,而图片资源并不会使用内边距。
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202003.png)
SPDY结果
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202004.png)
HTTP/2结果
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202005.png)
HTTPS结果
结果显示,SPDY和HTTP/2通过多路复用技术降低了页面下载时的连接数,而原生的HTTPS协议则需要创建更多的连接。
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202006.png)
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202007.png)
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202008.png)
结果显示,由于不支持头信息压缩,并且缺少所需的额外TCP连接和SSL握手,原生HTTPS所需的时间最长,如果页面更复杂,那么差距会更明显。同时,虽然HTTP/2的响应消息比SPDY大,但是加载时间要比SPDY短。
整个性能测试包含4个场景,使用的软件为Firefox和HttpWatch,测试网页为Google UK首页,比较的协议包括原生HTTPS、SPDY/3.1和HTTP/2协议,同时每一个测试都是在没有浏览器缓存的Firefox实例上执行的,虽然这些测试非常简单,页面也不复杂,但是这并不影响三种不同协议之间重大差异的比较。
测试#1——请求和响应头的大小
虽然大部分网站都已经在下载文本内容的时候使用压缩提升性能,但是HTTP/1.1并不支持HTTP头压缩,为此SPDY和HTTP/2应运而生, SPDY使用了通用的DEFLATE算法,而HTTP/2则使用了专门为压缩头信息而设计的HPACK算法。第一个测试通过一个没有内容的请求生成的头信息的大小来查看三种协议的不同:
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202000.jpg)
其中,“Sent”列表示请求头的大小,“Received”列表示响应头的大小,结果显示,使用HPACK算法的HTTP/2协议头信息最小。
测试#2——响应消息的大小
Web服务器的响应由响应头和编码的响应内容两部分组成。对于图片的请求,测试结果如下:![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202001.jpg)
对于文本资源的请求,结果如下:
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202002.jpg)
结果显示,对于图片HTTP/2协议的请求和响应信息都最小,而对于文本资源,虽然HTTP/2的请求信息依然最小,但是响应信息却比SPDY协议稍大一点。究其原因,这可能是由添加到HTTP/2数据帧中的可选内边距字节造成的,而图片资源并不会使用内边距。
测试#3——TCP连接数和页面加载时的SSL握手请求数
HTTP/1.1通过增加到每个主机的最大连接数来提高性能,而SPDY和HTTP/2则是通过使用多路复用技术在一个单独的TCP和SSL连接上支持并发,通过在一个连接上一次性发送多个请求来发送或接收数据。该场景的测试结果如下:![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202003.png)
SPDY结果
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202004.png)
HTTP/2结果
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202005.png)
HTTPS结果
结果显示,SPDY和HTTP/2通过多路复用技术降低了页面下载时的连接数,而原生的HTTPS协议则需要创建更多的连接。
测试#4——页面加载时间
页面加载时间是一个比较重要的性能指标,该测试使用了HttpWatch中的“页面加载”事件来查看每种协议所需的时间,结果如下:![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202006.png)
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202007.png)
![](http://cdn1.infoqstatic.com/statics_s1_20151111-0209/resource/news/2015/02/https-spdy-http2-comparison/zh/resources/0202008.png)
结果显示,由于不支持头信息压缩,并且缺少所需的额外TCP连接和SSL握手,原生HTTPS所需的时间最长,如果页面更复杂,那么差距会更明显。同时,虽然HTTP/2的响应消息比SPDY大,但是加载时间要比SPDY短。
相关文章推荐
- 网络文件下载
- 关于安卓HTTP请求用HttpUrlConnection还是HttpClient好
- centos ningx 下安装https
- HttpServletRequest中得到各种信息
- Flowplayer 播放RTMP协议的网络地址并准确记录视频播放的动作以播放的时长
- 在eclipse中往远程库中push代码遇到下面的错误 https://git.ms.netease.com/kanghuaisong/Git_demo.git: cannot open git-up
- 一个图形的算法网站: http://visualgo.net/
- 图标库网络地址
- 习近平与“十三五”十四大战略:网络强国战略
- Java for Web学习笔记(六):Servlet(4)HttpServletResponse
- python网络编程(TCP客户端/服务器端实现)
- 思科三层交换机策略路由实现网络接入分流
- php Basic HTTP与Digest HTTP 应用
- 面试题08-多线程网络
- vs2013调用不了Ajax,或者是不走HttpHandler类
- ubuntu系统 http服务手动编译安装
- https://css-tricks.com/examples/ShapesOfCSS/ 样式DEMO
- Http——HTTPS和SSL/TLS协议
- JavaWeb学习总结(五十)——文件上传和下载 http://www.cnblogs.com/xdp-gacl/p/4200090.html
- 错误“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决方案