AICon全球人工智能与机器学习技术大会周四开幕,点击查看完整日程>> 了解详情
写点什么

HTTPS、SPDY 和 HTTP/2 的性能比较

  • 2015 年 2 月 03 日
  • 本文字数:1146 字

    阅读完需:约 4 分钟

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 实例上执行的,虽然这些测试非常简单,页面也不复杂,但是这并不影响三种不同协议之间重大差异的比较。

测试#1——请求和响应头的大小

虽然大部分网站都已经在下载文本内容的时候使用压缩提升性能,但是 HTTP/1.1 并不支持 HTTP 头压缩,为此 SPDY 和 HTTP/2 应运而生, SPDY 使用了通用的 DEFLATE 算法,而 HTTP/2 则使用了专门为压缩头信息而设计的 HPACK 算法。

第一个测试通过一个没有内容的请求生成的头信息的大小来查看三种协议的不同:

其中,“Sent”列表示请求头的大小,“Received”列表示响应头的大小,结果显示,使用 HPACK 算法的 HTTP/2 协议头信息最小。

测试#2——响应消息的大小

Web 服务器的响应由响应头和编码的响应内容两部分组成。对于图片的请求,测试结果如下:

对于文本资源的请求,结果如下:

结果显示,对于图片 HTTP/2 协议的请求和响应信息都最小,而对于文本资源,虽然 HTTP/2 的请求信息依然最小,但是响应信息却比 SPDY 协议稍大一点。究其原因,这可能是由添加到 HTTP/2 数据帧中的可选内边距字节造成的,而图片资源并不会使用内边距。

测试#3——TCP 连接数和页面加载时的SSL 握手请求数

HTTP/1.1 通过增加到每个主机的最大连接数来提高性能,而 SPDY 和 HTTP/2 则是通过使用多路复用技术在一个单独的 TCP 和 SSL 连接上支持并发,通过在一个连接上一次性发送多个请求来发送或接收数据。该场景的测试结果如下:

SPDY 结果

HTTP/2 结果

HTTPS 结果

结果显示,SPDY 和 HTTP/2 通过多路复用技术降低了页面下载时的连接数,而原生的 HTTPS 协议则需要创建更多的连接。

测试#4——页面加载时间

页面加载时间是一个比较重要的性能指标,该测试使用了 HttpWatch 中的“页面加载”事件来查看每种协议所需的时间,结果如下:

结果显示,由于不支持头信息压缩,并且缺少所需的额外 TCP 连接和 SSL 握手,原生 HTTPS 所需的时间最长,如果页面更复杂,那么差距会更明显。同时,虽然 HTTP/2 的响应消息比 SPDY 大,但是加载时间要比 SPDY 短。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 2 月 03 日 07:3819195
用户头像

发布了 321 篇内容, 共 106.7 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

Mac打开wps后风扇转的快机身发热

现实中游走

Mac cpu 100% wps 机身发热

信息茧房

lidaobing

28天写作 信息茧房

分析 BAT 互联网巨头在大数据方向布局及大数据未来发展趋势

五分钟学大数据

大数据 2月春节不断更

【Linux系统】常驻进程应用实践

程序员架构进阶

Linux 守护进程 七日更 28天写作 2月春节不断更

为什么要持续学习

不在调上

5G专网是个大西瓜(二):碰撞之谜

脑极体

管理笔记[6]:任人唯贤、赏罚分明、任人所长

俊毅

28天瞎写的第二百三十七天:抢了HR 饭碗了吗?

树上

HR 28天写作

黑客练手入门| pwnable.kr—幼儿瓶—01:fd

BigYoung

黑客 安全 安全漏洞 28天写作 2月春节不断更

由孩子学会骑自行车想到

石君

日常思考 28天写作

日记 2021年2月3日(周三)

Changing Lin

个人感悟 2月春节不断更

思维导图整理Java并发基础

Java 架构 并发

第四周-第一课

Geek_娴子

冰河去腾讯了?

冰河

程序员 程序人生 冰河 冰河技术

Nacos源码编译

程序员 Fox

nacos

机器学习笔记之:Addition and Scalar Multiplication

Nydia

💯 关于 TCP 三次握手和四次挥手,满分回答在此

飞天小牛肉

面试 后端 计算机网络 TCP/IP 2月春节不断更

游戏夜读 | 游戏中的确定性

game1night

图解 | 原来这就是线程池

架构 线程池

通过扫码提交信息

IT蜗壳-Tango

七日更 2月春节不断更

100+标杆案例和1个减法:华为“懂行100”给2021带来了什么?

脑极体

原子性操作类的使用

武哥聊编程

Java 多线程 原子性 28天写作

Seata1.4.0源码编译

程序员 Fox

seata

深入理解nodejs的HTTP处理流程

程序那些事

node.js HTTP 异步编程 程序那些事

Redis缓存热点引发的思考

Java架构师迁哥

每个人都应该理解这三个基本的 MLOps 概念

李忠良

28天写作

Spark+Kafka实时监控Oracle数据预警

互联网架构师小马

数据库 oracle 大数据 kafka spark

javascript脚本何时会被执行

互联网架构师小马

Java JavaScript html

SpringIOC的注解开发

小马哥

Java spring 七日更

硬核!阿里自爆虐心万字面试手册,Github上获赞89.7K

996小迁

spring 架构 面试 程序人生 JVM

常用网址

现实中游走

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

HTTPS、SPDY和HTTP/2的性能比较-InfoQ