1.如何知道网站中哪些是API使用的是http2协议?
基于谷歌浏览器:
1.首先打开开发者工具,并切到network一栏
2.右键点击Name,在出现的下拉菜单中选择Protocol
3.刷新页面即可看到Protocol一栏中,含有h2的即代表当前API使用的是HTTP2协议
2.http1与http2对比
http1.1
1.TCP 连接数限制:
对于同一个域名,浏览器最多只能同时创建 6~8 个 TCP 连接 (不同浏览器不一样)。为了解决数量限制,出现了域名分片技术,其实就是资源分域,将资源放在不同域名下 (比如二级子域名下),这样就可以针对不同域名创建连接并请求,以一种讨巧的方式突破限制,但是滥用此技术也会造成很多问题,比如每个 TCP 连接本身需要经过 DNS 查询、三步握手、慢启动等,还占用额外的 CPU 和内存,对于服务器来说过多连接也容易造成网络拥挤、交通阻塞等,对于移动端来说问题更明显,可以参考这篇文章:Why Domain Sharding is Bad News for Mobile Performance and Users
在图中可以看到新建了六个 TCP 连接,每次新建连接 DNS 解析需要时间(几 ms 到几百 ms 不等)、TCP 慢启动也需要时间、TLS 握手又要时间,而且后续请求都要等待队列调度
2、线头阻塞 (Head Of Line Blocking)问题
每个 TCP 连接同时只能处理一个请求 - 响应,浏览器按 FIFO 原则处理请求,如果上一个响应没返回,后续请求 - 响应都会受阻。为了解决此问题,出现了管线化 - pipelining技术,但是管线化存在诸多问题,比如第一个响应慢还是会阻塞后续响应、服务器为了按序返回相应需要缓存多个响应占用更多资源、浏览器中途断连重试服务器可能得重新处理多个请求、还有必须客户端 - 代理 - 服务器都支持管线化
3、Header 内容多,而且每次请求 Header 不会变化太多,没有相应的压缩传输优化方案
4、为了尽可能减少请求数,需要做合并文件、雪碧图、资源内联等优化工作,但是这无疑造成了单个请求内容变大延迟变高的问题,且内嵌的资源不能有效地使用缓存机制
5、明文传输不安全
Web已经远远超出了传统的基于HTTP的网络技术的能力。十多年前开发的HTTP1.1的核心特性为几个令人尴尬的性能和安全漏洞打开了大门。
例如,Cookie Hack允许网络犯罪分子重复使用以前的工作会话来破坏帐户密码,因为HTTP1.1不提供会话端点身份设施。虽然类似的安全问题将继续困扰HTTP / 2,但新的应用程序协议设计具有更好的安全功能,例如改进的 新TLS功能的实现。
3.HTTP / 2功能升级
1.二进制协议
最新的HTTP版本在功能和诸如从文本协议转换为二进制协议等属性方面已经有了很大的发展。HTTP1.x用于处理文本命令以完成请求 - 响应周期。HTTP / 2将使用二进制命令(在1和0中)来执行相同的任务。此属性简化了框架的复杂性,并简化了由于包含文本和可选空间的命令而混淆混合的命令的实现。
虽然与文本命令相比,读取二进制文件可能需要更多努力,但网络更容易生成和解析二进制文件中可用的帧。实际的语义保持不变。
使用HTTP / 2实现的浏览器会在通过网络传输之前将相同的文本命令转换为二进制文件。二进制成帧层不与HTTP1.x客户端和服务器向后兼容,而是与SPDY和HTTP1.x相比具有显着性能优势的关键推动因素。使用二进制命令为互联网公司和在线业务提供关键业务优势,详见HTTP / 2的优点,如下所述:
1.解析数据的开销很低 - 这是HTTP / 2与HTTP1的关键价值主张。
2.不容易出错。
3.更轻的网络足迹。
4.有效的网络资源利用率
5.消除与HTTP1.x的文本性质相关的安全问题,例如响应分裂攻击。
6.启用HTTP / 2的其他功能,包括压缩,多路复用,优先级排序,流量控制和TLS的有效处理。
7.紧凑的命令表示,便于处理和实现。
8.在客户端和服务器之间处理数据方面高效且稳健。
9.减少网络延迟并提高吞吐量。
2.流优先级
HTTP / 2实现允许客户端提供对特定数据流的偏好。虽然服务器不一定遵循客户端的这些指令,但该机制允许服务器根据最终用户要求优化网络资源分配。
3.HTTP / 2权重
流优先级与分配给每个流的依赖关系和权重一起使用。虽然所有流本质上都是相互依赖的,但是依赖流也被赋予1到256之间的权重。流优先级机制的细节仍然存在争议。
但在现实世界中,服务器很少能控制CPU和数据库连接等资源。实现复杂性本身可防止服务器容纳流优先级请求。由于该协议能够使用单个TCP连接处理多个数据流,因此该领域的研究和开发对于HTTP / 2的长期成功尤为重要。
此功能可以导致服务器请求同时到达,这些请求实际上在最终用户方面具有不同的优先级。随机阻止数据流处理请求会破坏HTTP / 2更改所承诺的效率和最终用户体验。同时,智能且广泛采用的流优先级排序机制提出了HTTP / 2的优点,解释如下:
有效的网络资源利用率
减少了传递主要内容请求的时间。
提高了页面加载速度和最终用户体验。
客户端和服务器之间的优化数据通信。
减少网络延迟问题的负面影响。
4.HTTP / 2服务器推送
此功能允许服务器向客户端发送其他可缓存信息,这些信息未被请求但在将来的请求中是预期的。例如,如果客户端请求资源X并且理解资源Y被引用所请求的文件,则服务器可以选择将Y与X一起推送而不是等待适当的客户端请求。
客户端将推送的资源Y放入其缓存中以供将来使用。此机制可节省请求响应往返并减少网络延迟。Server Push最初是在Google的SPDY协议中引入的。包含伪标头的流标识符,例如:path允许服务器为必须可缓存的信息启动Push。客户端必须明确允许服务器使用HTTP / 2推送可缓存资源,或者使用特定流标识符终止推送流。
其他HTTP / 2更改(如服务器推送)主动更新或使客户端缓存无效,也称为“缓存推送”。长期后果围绕服务器识别客户实际上不需要的可能可推送资源的能力。
HTTP / 2实现为推送的资源提供了显着的性能,HTTP / 2的其他好处解释如下:
客户端将推送的资源保存在缓存中。
客户端可以跨不同页面重用这些缓存资源。
服务器可以在同一TCP连接中复用推送的资源以及最初请求的信息。
服务器可以优先推送推送的资源 - 这是HTTP / 2与HTTP1的关键性能差异。
客户端可以拒绝推送资源以维护缓存资源的有效存储库或完全禁用服务器推送。
客户端还可以限制同时复用的推送流的数量。
类似的推送功能已经提供了次优技术,例如内联推送服务器响应,而服务器推送提供了协议级解决方案,以避免复杂性与应用协议本身的基线功能之后的优化黑客。
HTTP / 2对推送的数据流进行多路复用和优先级排序,以确保更好的传输性能,如其他请求 - 响应数据流所示。作为内置安全机制,必须事先授权服务器推送资源。
4.HTTP / 2如何使用HTTPS
H TTPS用于建立连接计算机,机器和服务器的超安全网络,以处理敏感的业务和消费者信息。处理金融交易的银行和维持病历的医疗机构是网络犯罪的主要目标。HTTPS可以作为抵御持续网络犯罪威胁的有效层,虽然不是用于抵御侵入高价值企业网络的复杂网络攻击的唯一安全部署。
HTTP / 2浏览器支持包括HTTPS加密,实际上补充了HTTPS部署的整体安全性能。诸如更少的TLS握手,客户端和服务器端的低资源消耗以及重新利用现有Web会话的能力,同时消除与HTTP1.x相关的漏洞的功能使HTTP / 2成为在敏感网络环境中保护数字通信的关键促成因素。
HTTPS不仅限于高知名度的组织,网络安全对于在线业务所有者,休闲博主,电子商务商家甚至社交媒体用户同样重要。HTTP / 2本身需要最新,最安全的TLS版本,所有在线社区,企业所有者和网站管理员必须确保其网站默认使用HTTPS。
设置HTTPS的常用流程包括使用Web托管计划,购买,激活和安装安全证书,最后更新网站以使用HTTPS。
5.如何开启HTTP2
第一步
确保已启用HTTPS:从有效的颁发机构购买SSL或TLS证书,或者 如果可用,则使用Let's Encrypt中的免费SSL 。
激活安全证书。
安装证书。
更新网站以启用HTTPS协议。
第2步
确保包括服务器软件在内的底层网络基础架构支持HTTP / 2。Nginx服务器原生支持HTTP / 2,而Apache在2015年10月(2.4)中添加了本机支持,这意味着apache服务器可能需要额外的模块才能使用HTTP / 2浏览器支持进行数据通信。
注意:对于通过HTTPS运行的所有站点,默认情况下在Kinsta上启用HTTP / 2。
第3步
更新,配置和测试您的服务器以支持HTTP / 2。 此资源 描述了Apache服务器的配置和测试过程。请与您的网络托管服务提供商联系,以确保您的网站已准备好HTTP / 2。
第4步
使用 此工具 检查您是否已正确配置HTTP / 2。
结论
HTTP / 2在网络世界中的统治和霸权是不可避免的。 该应用程序协议看起来将伴随着HTTP1.x的传统,它通过革命性的数据传输功能改变了网络世界。HTTP / 2的前身技术优势远远超过了HTTP1.x在当时针对传统数据通信机制建立的创新差距。
但是,启用HTTP / 2只是提高页面速度的广阔之旅的一个步骤。此Kinsta入门标题为“ 网站速度优化的初学者指南 ”描述了如何构建速度,解决性能瓶颈以及与卓越的Web性能相关的战略业务优势。