50

HTTP 2.0 PK HTTP 1.X —— 速度与激情

 6 years ago
source link: http://www.10tiao.com/html/146/201806/2650081775/3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client


准备发车,带你体验速度与激情,我们的热火瞬间点燃黑夜。

背景

目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 


相信大家听说过HTTP 2.0,那么它和HTTP 1.X相比效果到底如何呢?请看疗效: 

单次页面加载速度对比

实践出真知,有请DEMO先生出场——一个网页,加载了8张图片,图片大小合计10MB


  • http 1.x:


DOMContentLoaded: 215ms,  Load: 549ms



  • http2.0:


DOMContentLoaded:156ms, Load:491ms



从数据中大家可以看到,对于这个DEMO页,HTTP 1.X需要花费549ms,而使用HTTP 2.0则可以减少60ms左右的等待。


Emmmm……才60ms,貌似没想像中改善那么大,60ms用户应该无感吧?


确实对单次用户访问来说,改善不大,但是用户浏览一个网站,不是一次就结束了,他会在接下来的时间里与网站产生多次互动。如果每个请求我们都能节省一点点时间,那么在用户的多次互动中,累加起来的时间应该比较可观了。

若是在大并发请求下,效果又当如何呢?上!压!测!


压测数据对比


模拟1,000,000 次请求压测数据如下:


http不同协议请求参数对比



从上表可以看到http2.0和http1.1相比,节省30s左右的时间,没有对比没有伤害。、(压测方法可见文末附录二)


网络表现不错,我们再来看看服务器资源消耗情况。


cpu 使用情况


我们将相关数据制成了图表,方便大家比对

 

us: 用户空间占用cpu时间
sy:系统空间占用cpu时间
hi: 硬盘中断

si: 软件中断


http1.1



cpu(us+sy)平均:82.51%


http2.0



cpu(us+sy)平均:63.09%


疗效相当不错,看官们是否动心了呢?接下来为你呈上运用之道。

 

http 协议发展




使用http2.0的必备条件


默认https支持http2.0(2015年提出)


浏览器支持ALPN
 

查看是否支持http2.0的三种方法


使用openssl测试


终端输入:echo | openssl s_client -alpn h2 –connect 域名:443



通过Chrome浏览器的属性查看


输入框键入 chrome://net-internals/#http2


 

通过Chrome的debug工具查看


protocol为h2


 

http1.1与http2.0的区别



报头压缩


通过h2load 命令访问



多路复用


  • http1.1


http1.1 without pipelining: 通过tcp连接上一个请求相应完后,下一个请求才能发出


http1.1 with pipelining: 通过tcp连接,上一个请求发出,下一个请求不需要等待,但是返回是同一顺序。


 

HTTP 1.X的网络加载情况,同一域名,最多支持6个Tcp连接,加载效果如同“正三角形”,看得我强迫症都犯了……

 

  • http2.0


在TCP连接上传输的是帧,客户端会将要传输的数据拆分为不同的帧,并标记对应的数据流ID,异步发出,服务端接收到帧集合根据数据流ID拼凑起来即为客户端发送来的数据。同理,服务端也是将数据拆分为不同帧返回。
 

每个请求通过tcp连接发出不需要等待其他请求返回, 所有的数据返回没有顺序。


 

HTTP 2.0的网络加载情况,同一时刻,可以发出30以上的数据帧且无序,感觉很舒服有没有??


我们不妨以货物运输来再现http1.1与http2.0的请求场景。


A地与C地之间相隔一条河流,货物运输需要途径桥梁。假定现有横跨A,C两地的6座桥梁(类似Chrome同一域名最大支持6个TCP通道),以其中一座双向路线桥梁b1为例,


http1.1的过程:


一辆运输车辆从A地出发,通过桥梁b1,到达C地,然而只有在该车辆从C地取货并返回后,另一辆车才能出发。如此有序往返...


http2.0的过程:


所有的车辆无序上桥,取货后返回,根据车辆牌照卸载对应取货物品。


显而易见,第二种方式,桥梁利用率高,车辆运输货物多。

 

请求优先级


http1.1 不支持请求优先级,在统一域名大量请求同时发送时,浏览器支持6个请求,由于没有优先级,加载的时候会出现javascript资源阻塞情况。


http2.0, 浏览器通过headers和priority携带优先级信息,服务器生成优先级树,指导资源的分配(内存,cpu时间,带宽)。

优先级最高:  主要的html
优先级高:   CSS文件
优先级中:   js文件

优先级低:   图片

 

服务端主动推送


http1.1:在访问页面时,浏览器识别html页面上的link链接,然后请求对应的资源,浏览器开始识别到请求需要一定时间。


http2.0: 在访问页面时,服务器主动推动资源下载,让浏览器直接请求link资源。


目前nginx1.13.9版本支持push功能

 

附录一: nginx安装配置http2.0


软件要求


nginx 版本1.9.5以上 nginx 下载页

openssl 1.0.2以上 openssl 下载页


安装过程



配置http2.0


listen   443 ssl http2;



附录二:压测


  • 压测工具


对于http,https使用apache 的ab


对于http/2使用nghttp2的h2load


  • 压测http



  • 压测http2.0


http2.0之压测



附录三:http协议

定义


Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议


组成


请求行+请求头+请求正文+返回头部+返回正文

 

请求行 


method Request-URI  Http Version

GET /index.html HTTP/1.1


请求头部



请求正文


请求是form表单数据或application/json 格式数据


返回头部



返回正文


服务端返回的结果

 

TCP握手


SYN---->SYN-ACK---->ACK

 

附录四: https协议

定义


https是一个在网络上改写的超文本安全通信传输协议。


在原有的TCP三次握手基础上,还有一次握手服务端下发ssl证书(所有者,域名公钥,数字签名,证书时间等),客户端验证证书。


证书


自签名证书或CA颁发


加密


对称加密和非对称加密

附录五:SPDY与ALPN

SPDY :是speedy的缩写,由Google开发实现,现已被弃用,它的目的是减少页面加载延迟,提高网站安全,主要是通过压缩,多路复用,优先级减少延迟。
 

ALPN:Application-Layer Protocol Negotiation, 它允许应用层商议在一个安全的连接上那种协议执行,为了避免循回绕行。


在与http2.0一起使用时,可以提高页面压缩率,减少网络延迟。


作者简介


就职于甜橙金融信息技术部,负责前端开发工作,先后任职携程,平安等公司的前端开发工程师职位,喜欢研究新的技术,服务于业务需求,熟练运用Linux/Unix系统命令,以终端为载体,快速执行操作。



推荐阅读

JPA、Hibernate、Spring Data JPA 之间的关系

遭微软放弃,Windows 7 终究活成了 XP 的样子

用 Python 分析4W场球赛,2018 世界杯冠军竟是......

从 Java 到 Kotlin,再从 Kotlin 回归 Java

“王者对战”之 MySQL 8 vs PostgreSQL 10

点击“阅读原文”查看更多精彩内容

Recommend

  • 102

    《速度与激情》系列的剧组内部矛盾从第八部开始到现在一直没有平息,还因为《速激9》的延期和衍生片的插入有愈演愈烈之势,早先曾站队范迪塞尔的《速激》演员泰瑞斯·吉布森今日再度在社交媒体发声,这次更是直接呛声巨石强森。

  • 44
    • www.tuicool.com 5 years ago
    • Cache

    5G速度与激情

    文 | 曹亦卿 5G战火纷飞之际,中国擂响了战鼓。 6月6日,工业和信息化部(工信部)正式向中国电信、中国移动、中国联通和中...

  • 13

  • 7
    • zhuanlan.zhihu.com 3 years ago
    • Cache

    速度与激情:Webpack5 & 极速编译

    速度与激情:Webpack5 & 极速编译已认证的官方帐号作者:glendonli,腾讯 PCG 前端开发工程师 对于大型前端项目而言,构建的稳定性和易用性至关重要,腾讯...

  • 7
    • www.alloyteam.com 3 years ago
    • Cache

    编译的速度与激情:从 10mins 到 1s

    编译的速度与激情:从 10mins 到 1s 导语:对于大型前端项目而言,构建的稳定性和易用性至关重要,腾讯文档在迭代过程中,复杂的项目结构和编译带来的问题日益增多,极大的增加了新人上手与日常搬砖的开销。恰逢 Webpack5 上线,不如来一...

  • 11

    速度与激情中国发布会收到威胁取消实时讨论:71.9W 环球影业发布声明,称原定今天举行的《速度与激情9》中国发布会实体活动取消,原因是“环球影业收到了试图使发布会无法正常举行的威胁,并在一定程度上引发了安全隐患。...

  • 5
    • maoyan.com 3 years ago
    • Cache

    速度与激情9

    速度与激情9_购票_剧情介绍_演职人员_图集_猫眼电影 猫眼电影 > 电影 > 速度与激情9 ...

  • 8
    • tieba.baidu.com 3 years ago
    • Cache

    #速度与激情9#

    速度与激情9实时讨论:39.4W 《速度与激情9》评价均分为5.5/10,不及前作。票房方面,影片仍取得5850万人民币的午夜场票房佳绩,持平《复仇者联盟3》。

  • 10

    【精】【夏日速度与激情】成年人的游戏体验,谁还不是个宝宝了呢!不一Young精选推荐 【夏日速度与激情】成年人的游戏体验,谁还不是个宝宝了呢! ...

  • 3
    • www.51cto.com 2 years ago
    • Cache

    Java应用提速(速度与激情)

    作者 | 道延 微波 沈陵 梁希 大熊 断岭 北纬 未宇 岱泽 浮图一、速度与效率与激情什么是速度?速度就是快,快有很多种。有小李飞刀的快,也有闪电侠的快,当然还有周星星的快:(船家)"我是出了名够快"。(周星星)“...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK