HTTPS、SPDY和HTTP/2的性能比较-程序员宅基地

技术标签: 网络  

Firefox 35发布新版本默认支持HTTP/2协议(草案14版本),针对该升级HttpWatch也发布了相应的更新,使其能够在Firefox中支持HTTP/2,由于Google的web服务器现在能够同时支持HTTP/2草案14版本和SPDY协议,使得HttpWatch能够在同样的Web页面上对比HTTPS、SPDY和HTTP/2的性能。

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短。


作者:孙镜涛

来源:51CTO

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33739541/article/details/90367128

智能推荐

Argo 101 - 2 : S3/Minio Storage_argo v1alpha1s3artifact-程序员宅基地

文章浏览阅读1k次。继续Argo之旅;Argo基本概念再熟悉下 Argo 的核心概念:WorkflowTemplate,可以看作是function,Argo中的Template有两类:定义Templatecontainer,最常见的,也是Argo的优势script,基于container,你可以写点什么resouce,直接操作k8s的任何resourcesuspend,暂停一段时间,等同于 Thread.wait(int time)调用Templatesteps,直接调用其他Template_argo v1alpha1s3artifact

【游戏开发】minecraft沉浸工程电孤炉自动更换石墨电极_mc沉浸工程石墨电极自动更换-程序员宅基地

文章浏览阅读1.3k次。前言 解压怀旧一下mc,打造一个全自动化世界。期间,做了很多自动化逻辑流程设计、查修一些bug反馈到github修正,手工开发一些function补充功能,自编译mod提前修已知问题等,基本没有娱乐,主要在研究和创造,过程不亚于工作中的开发。 结果很不错,这里分享一些难点解决。一、问题背景 mc 全自动化实现,电孤炉不能更换石墨电极,批量生产更换频率不低,有待解决。 环境:mc1.16.3,forge,沉浸工程 植物魔法 精致存储等..._mc沉浸工程石墨电极自动更换

力扣刷题(c语言)_力扣c语言题库答案-程序员宅基地

文章浏览阅读849次。力扣_力扣c语言题库答案

linux安装配置nginx,反向代理 以及 rewrite 实现URL跳转_linux url跳转-程序员宅基地

文章浏览阅读5.7k次。反向代理1,先下载ngix,下载了个1.8.1版本的 :http://nginx.org/en/download.html 解压(内网安装参考https://www.cnblogs.com/taiyonghai/p/6728707.html)2,安装相关组件,先进入ngix目录3,安装相关组件,先进入ngix目录 #安装gcc-c++,autoconf表示自动配置,auto..._linux url跳转

群晖NAS跨存储空间移动套件(应用)_mods package manager-程序员宅基地

文章浏览阅读1.5w次,点赞3次,收藏19次。之前一篇文章《群晖NAS跨存储空间移动共享文件夹(NAS新增磁盘)》我们介绍了如何在NAS槽位新增磁盘,并构建新的磁盘阵列,最后再将部分共享文件夹移动到新的磁盘空间即可。弄完这一系列操作之后,考虑到原来的存储空间太小,于是打算将所有的套件(应用)安装目录由原来的存储空间移动到新的磁盘空间来。于是几经折腾,终于将所有的应用都移动到了新的存储空间来。_mods package manager

R语言中scan函数的详细解释及示例代码_r语言scan函数-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏3次。scan函数是R语言中用于从外部源(如文件或用户输入)读取数据的函数。scan函数具有多个参数,每个参数都有特定的含义和用途。下面将详细解释scan函数的各个参数,并提供相应的示例代码。以上是scan函数的各个参数的详细解释及示例代码。通过灵活使用这些参数,你可以方便地从不同来源读取数据并进行相应的处理和分析。希望这些示例代码能够帮助你更码能够帮助你更好地理解和使用scan函数。R语言中scan函数的详细解释及示例代码。nmax:最大读取数量参数。quiet:静默模式参数。what:数据类型参数。_r语言scan函数

随便推点

@EnableAsync配合@Async标签使用实现异步处理_@enableasync与@async必须同时使用吗-程序员宅基地

文章浏览阅读261次。@Async标签一、使用Async标签的使用条件:一般应该使用在类的方法上,如果使用在类上,那么整个类中的方法都是异步的。 调用@Async方法的方法所在的类应该是spring容器管理的bean 应该配合@EnableAsync标签同时使用(下面会说如何使用@EnableAsync标签) 使用Async注解的方法,返回值必须为Void或Futur二、使用注意事项当被标注的方法没有确定返回类型时,@Async会失去作用 当被标注的方法与调用方法在同一个类中的时候,@Async会失去作用_@enableasync与@async必须同时使用吗

VisionPro工具---对应功能说明-程序员宅基地

文章浏览阅读1.1w次,点赞17次,收藏45次。VisionPro工具 项次 分类 名称 功能 1 无分类 CogAcqFifoTool 从相机获取图像 2 CogBlobTool 斑点找寻工具 3 CogCaliperTool 卡尺工具,用于找单边或边缘对 4 CogCNLSearchTool 在图像中找寻像素值的训练模板..._visionpro工具

Java多线程相关知识点汇总_java多线程相关概念-程序员宅基地

文章浏览阅读1.3k次。1.ThreadLocal2.如何保证高并发场景下的线程安全?3.JUC(java.util.concurrent)包4.volatile5.信号量同步6.线程池7.线程同步类8.并发集合类9.锁机制1.ThreadLocalThreadLocal如何实现多线程数据隔离?ThreadLocal内存泄漏问题?ThreadLocal脏数据问题?ThreadLocal主要功能:..._java多线程相关概念

浙大版《C语言程序设计(第3版)》题目集 习题3-2 高速公路超速处罚 (15 分)_输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。-程序员宅基地

文章浏览阅读872次。按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。输入格式:输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。输出格式:在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。输入样例1:_输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

Linux下Oracle创建新的用户并设置权限_linux oracle 创建用户和权限-程序员宅基地

文章浏览阅读3.3k次。$ export DISPLAY=10.3.3.8:0.0(10.3.3.8是本机地址,此命令作用是在本机打开图形界面)$ dbca此命令作用是打开的工具,将会打开oracle创建实例的图形界面,创建完以后,进入到新创建的实例(以test为例)$ echo $ORACLE_SID显示当前的实例id$ export ORACLE_SID=test 切换到test实..._linux oracle 创建用户和权限

java学习笔记01_简述andiroid平台的特征-程序员宅基地

文章浏览阅读291次。初识JAVA:JAVA是一种计算机语言,主要应用于企业级应用,移动领域的-Andiroid平台的应用。JAVA的特点:两个基本概念:类、对象三大特性:封装、继承、多态 健壮性:吸收了C/C++的优点,去掉了其影响健壮性的部分如:指针。内存的申请和释放跨平台性:通过JAVA语言编写的应用程序可以在不同的系统平台上运行。JAVA两大核心机制JAVA虚拟机 JVM(_简述andiroid平台的特征