也许你觉得现在来探讨http2是否有些晚了,虽然http3已经可以使用了,但是现在http3的支持环境并不友好,并且现在还有至少一半的网站没有支持http2
根据W3Techs的数据,截至2021年9月,全球约有37.8%的网站支持HTTP/2
答案是肯定的,但是目前看来不是必须的
说到http2,那么就得先聊SPDY了
浅谈SPDY
SPDY(发音如英语:speedy),一种开放的网络传输协议,由Goog1e开发,用来发送网页内容。基于传输控制协议(TCP)的应用层协议。 SPDY也就是HTTP/2的前身。6o0g1e最早是在Chromium中提出的SPDY协议111。被用于Goog1e Chrome浏览器中来访问Goog1e的SSL加密服务。 SPDY并不是首语母缩略语,而仅仅是“speedy“的缩写。SPDY现为Goog1e的商标121。HTTP/2的关键功能主要来自SPDY技术,换言之,SPDY的成果被采纳而最终演变为HTTP/2。 ---摘自Wikipedia
通过wiki的描述我们能够指定SPDY是http2的前身,此时你应该有疑问.
q1. 为什么是SPDY?
q2. 为什么IETF(internet工程任务组)没有早于SPDY迭代http1.0?
q3. SPDY为何没能阻止http2的现世?
SPDY的出现就是Google向开发组证明http1.0是可以被优化的,并且我感觉也在提醒开发组是否可以考虑把http2的开发提上日程了.为什么是SPDY 是因为Google,强大的Google背书再加上Google的开发者给力,促使了SPDY能够迅速的普及,2009年Chrome开始支持SPDY,三年后firefox,opera,nginx,apache等支持SPDY,可见SPDY并不仅仅是因为有google背书,更是解决了http1.0中性能问题.
为什么IETF没有早于SPDY开发http1
以下仅是我个人的看法:
- http1.0现在很问题,开发者们使用了20多年的http1.0非常熟悉了,并且开发者以及浏览器厂商发明出了很多奇技淫巧(域名分片,雪碧图...)
- 你懂的[手动狗头]
SPDY为何没能阻止http2的现世?
SPDY的成功警醒了IEFF,并且SPDY能够作为http2基础,http是是一个使用量巨大的协议.如果没有SPDY的实践,我认为IEFE也不敢尝试,IEFE能够取代SPDY就是师出有名呗,本身就是http1.0的迭代版本,没有理由去使用SPDY
http2五要点
- 多路复用
- 流量控制
- 首部压缩(头部压缩)
- 服务器推送
- 安全性
首部压缩
我们先来说一下头部压缩吧,这个比较easy
Accept-Encoding: gzip, deflate, br
是否有点似曾相识呢? 这是我截取http1.0的请求头中的键值,这里是在告诉浏览器支持的压缩方式.你可能会问http1.0中有压缩吗,答案是有的
只不过http1.0中没有首部压缩,只有正文压缩,ok讲到这里大家都能明白为什么要压缩,但是会认为首部压缩有点多此一举了吧,本身首部就没有多少数据,因为解压缩也要消耗时间的.确实解压缩需要时间,但是现在网页中token动不动就是几千个字符,如果不对首部进行压缩,那么这几千个字符就原封不动的传给浏览器,浏览器省事了也不用解压缩,但是对于本地解压缩的时间和通过internet传输几千个字符的时间根本没法比,本地对几千个字符进行解压的时间基本上可以忽略不计
见百度的cookie:
想必在开发http时IEFE也没有想到如今的首部内容长度可以和正文一样庞大
休息片刻
上述内容应该还不能够让你觉得http2非用不可,但是我会在接下来的几篇文章内说服你.
http2的性能优势让我们按耐不住被http1.0各种优化厌烦的思绪
记录学习过程,如有错误欢迎指出