千家信息网

http1.1相对http2有什么缺点

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章将为大家详细讲解有关http1.1相对http2有什么缺点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。服务器搭建完成之后,我们在public文件夹新建一个
千家信息网最后更新 2025年01月24日http1.1相对http2有什么缺点

这篇文章将为大家详细讲解有关http1.1相对http2有什么缺点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

服务器搭建完成之后,我们在public文件夹新建一个页面,这个页面中的资源主要由图片、css、js构成,代码如下:

观察html部分我们发现,页面设置了许多img标签,此时我们访问这个页面,观察浏览器的network,截图如下:

仔细观察其规律,浏览器请求图片资源时,最大并发数为6,这里要解释一下,浏览器针对同一个域名的网站最大的tcp链接数是根据浏览器规定的,谷歌浏览器默认的针对同一个域名的最大tcp链接数是6,这样的话页面中所有的图片资源,必须通过这6个tcp长连接来完成请求响应。

这里有一个比较形象的比喻,假如有一百个人要往返跨过一条河,河面上有6座桥,每座桥每次只能有一个人通过,那么同一时刻最多只能6个人同时过河,不能再多了,http1.1协议下的请求响应就是基于这个模型的。

在这里引入一个名词RTT:RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。

一个http请求响应最少要经历一个RTT,如果这个请求或者响应携带的数据量比较大,那么可能会需要经历多次传输,也就是需要经历多个RTT,我们这里简单计算,假设一个http请求只需要一个RTT,一个RTT所用时间为n秒。

如果在一个页面中只一个TCP长连接,现在100个资源所用时间为100*RTT*n,如果用6个TCP链接,那么时间缩短为100*RTT*n/6。

在http1.1协议下,针对浏览器对每个域名最大并发数的限制,我们可以利用域名分片的技术来进一步缩短时间,什么叫域名分片呢,给同一个网站设置多个域名,比如a.com和b.com都指向同一个网站,这样浏览器对同一个网站的最大并发数就会随着域名的增加而增加,时间进一步缩短为:100*RTT*n/(6*域名个数)。

但是,随着域名增多也会出现一些问题:

1、服务器压力增大。

2、浏览器解析域名也会花费时间,域名越多花费时间也越多。

上文关注的的技巧主要是利用浏览器的特性突破了其最大并发数,但是这样做治标不治本。

TCP本身存在一些问题,如慢启动,当网速发生变化时,TCP的速度也会随之波动,速度同样受影响。

TCP本身存在竞争关系,多个tcp同时连接会互相抢占网速。最重要的一点是:基于http1.1的tcp长连接有队头阻塞的现象,如果你不明白什么是http1.1的队头阻塞,欢迎阅读这篇文章:白话http队头阻塞。

聊完http1.1协议下浏览器TCP连接的特性,咱们来思考一个问题:页面解析过程中最先需要加载的是什么文件呢?

当然是CSS文件和js文件,但是大家思考一下css文件和js文件是什么时候加载的,是在html文件这个响应完成之后,浏览器快速扫描页面中的关键资源,而后下载js和css。这中间就可能出现一个空闲时间,这个空闲时间有两种可能,html中标签太多,解析比较费劲,虽然css下载完成但是依然需要等待DOM解析完成,另外一种是DOM解析完成CSS却没有下载完成,依然需要等待,这里无论我们怎么做,两者基本不会同步,我们应该如何做呢?在http1.1版本下我们能做的就是尽量缩短关键资源的加载,不管是html、css还是js。

在http1.1协议下,我们可以通过如下几种方案来做:

1、压缩代码,去掉注释

2、对不依赖dom的js文件合理应用async和defer避免dom解析的阻塞

3、对css应用媒体查询,对某些特定场景的css避免加载。

4、合理调整文件的个数和大小,这里不能一味的合并所有css或者js,如果某个css或者js体积过大,同样影响效率,只能不断的调整测试。本质就是减少资源加载花费的RTT,并且不要超过浏览器对同一域名最大的并发数。

5、合理利用CDN。

6、应用域名分片技术。

以上便是今天文章的内容,总结一下:

1、在http1.1版本中我们可以针对浏览器对同一个域名支持的最大TCP链接数这个特性,使用域名分片技术来加快资源下载,但是这样会也会随之带来一些问题,服务器压力增大,浏览器解析域名花费时间增多,看似并没有很好的解决我们的问题。

2、http1.1中的TCP长连接存在队头阻塞的问题,针对同一个tcp链接中的每一http请求必须响应之后后面的http才能继续。

3、TCP本身的一些不好的特性,慢启动,多条TCP链接竞争网速。

针对这些问题我们给出了一下解决方案,但是终归不是太优雅,随着互联网的高速发展http1.1似乎越来越不能满足当下用户的需求了,http2在这众望所归的时刻到来了,下篇文章带领大家利用http2来改善http1.1的这些不足。

最后提两个问题,在http1.1版本中我们能实现如下需求吗?

1、假如页面中要加载多个资源,有的资源比较重要,我们想要使其优先加载,应该怎么做呢?

2、当我们请求某个网址的时候,服务器能不能提前将页面需要的重要资源推送过来,而不是等待浏览器扫描html后再去加载?

3、既然多个TCP链接存在竞争关系,我们能不能让浏览器将针对同一个域名的所有http请求都基于同一个tcp链接呢?这样既减少了竞争,也减少了tcp链接的耗时操作。

关于"http1.1相对http2有什么缺点"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

域名 浏览器 浏览 资源 页面 文件 链接 最大 时间 问题 多个 阻塞 重要 服务器 特性 篇文章 网站 服务 竞争 个人 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 游戏网络技术项目 网信网络安全责任制落实情况 连接中文名数据库 山东济南黑马网络技术 存储服务器硬盘 小学生网络安全多选题答案 vba打开数据库 注册网页数据库 培训软件哪种软件开发 郎溪新能源软件开发服务商家 威海高校党建软件开发 子长市网络安全和信息化工作中心 网络技术在教育中的作用 新浪云服务器怎么用 网络安全应急演练方案及记录 教育部 网络安全 亚马逊数据库作用 河南省桐谷科创软件开发公司 伤害世界服务器ip 软件开发流程图模板手抄报 农安智能网络技术经验丰富 数据库安全管理子系统实现 上海对思网络技术有限公司 在网络安全中捏造是指未授权 如何看软件开发项目管理职位 中通快递做软件开发怎么样 软件开发活动顺序 山东省大学生网络技术比赛内容 远见信息技术有限公司数据库 阿富康网络技术有限公司
0