我们是否需要http2

175 阅读4分钟

也许你觉得现在来探讨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

以下仅是我个人的看法:

  1. http1.0现在很问题,开发者们使用了20多年的http1.0非常熟悉了,并且开发者以及浏览器厂商发明出了很多奇技淫巧(域名分片,雪碧图...)
  2. 你懂的[手动狗头]

SPDY为何没能阻止http2的现世?

SPDY的成功警醒了IEFF,并且SPDY能够作为http2基础,http是是一个使用量巨大的协议.如果没有SPDY的实践,我认为IEFE也不敢尝试,IEFE能够取代SPDY就是师出有名呗,本身就是http1.0的迭代版本,没有理由去使用SPDY

http2五要点

  1. 多路复用
  2. 流量控制
  3. 首部压缩(头部压缩)
  4. 服务器推送
  5. 安全性

首部压缩

我们先来说一下头部压缩吧,这个比较easy

Accept-Encoding: gzip, deflate, br

是否有点似曾相识呢? 这是我截取http1.0的请求头中的键值,这里是在告诉浏览器支持的压缩方式.你可能会问http1.0中有压缩吗,答案是有的

只不过http1.0中没有首部压缩,只有正文压缩,ok讲到这里大家都能明白为什么要压缩,但是会认为首部压缩有点多此一举了吧,本身首部就没有多少数据,因为解压缩也要消耗时间的.确实解压缩需要时间,但是现在网页中token动不动就是几千个字符,如果不对首部进行压缩,那么这几千个字符就原封不动的传给浏览器,浏览器省事了也不用解压缩,但是对于本地解压缩的时间和通过internet传输几千个字符的时间根本没法比,本地对几千个字符进行解压的时间基本上可以忽略不计

见百度的cookie: 截屏2023-05-03 19.59.59.png

想必在开发http时IEFE也没有想到如今的首部内容长度可以和正文一样庞大

休息片刻

上述内容应该还不能够让你觉得http2非用不可,但是我会在接下来的几篇文章内说服你.

http2的性能优势让我们按耐不住被http1.0各种优化厌烦的思绪

记录学习过程,如有错误欢迎指出