当前位置: 首页 > news >正文

上海网络网站建设/磁力岛

上海网络网站建设,磁力岛,免费咨询义诊,网页超链接到别的网站404目录 HTTP1.0 问题 短连接 阻塞 HTTP1.1 优化 长连接(增加connection header) 缓存优化 错误码增加 断点续传优化 新增请求方式 Host优化 节约宽带(身份认证) http 2.0 优化 多路复用 报文压缩 服务端推送 HTTP…

目录

HTTP1.0

问题

短连接

阻塞

HTTP1.1

优化

长连接(增加connection header)

缓存优化

错误码增加

断点续传优化

新增请求方式

Host优化

节约宽带(身份认证)

http 2.0

优化

多路复用

报文压缩

服务端推送


HTTP1.0

问题

短连接

一个请求建立一个TCP连接,请求完成后立马断开连接。这将会导致2个问题:连接无法复用

阻塞

连接无法复用会导致每次请求都经历三次握手和慢启动三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。会导致带宽无法被充分利用,以及后续健康请求被阻塞。客户端同时发起的请求数目是固定的,如果太多就会排队阻塞

HTTP1.1

优化

长连接(增加connection header)

通过http pipelining实现,http1.1默认开启长连接keep-alive(close时为短连接)。多个http 请求可以复用一个TCP连接,服务器端按照FIFO原则来处理不同的Request,一个Tcp连接通道可以并行多个http的请求和关闭。但是服务端还是根据客户端请求的先后顺序并且处理的,所以服务器依然会阻塞。

缓存优化

缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

错误码增加

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除

断点续传优化

引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

新增请求方式

PUT:请求服务器存储一个资源。
DELETE:请求服务器删除标识的资源。
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
CONNECT:保留将来使用。

Host优化

新增Host优化,通过不同host可以支持服务一个Ip对应多个虚拟Host主机。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)

节约宽带(身份认证)

HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器。如果返回401,客户端就可以不用发送请求body了节约了带宽。

http 2.0

优化

多路复用

客户端和服务端可以并行发起或者回复,避免串行带来的阻塞。做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

从上图可以看出,请求index.html页面的时候,浏览器会去请求style.css和scripts.js的文件。左边的图是顺序加载两个个文件的,右边则是并行加载两个文件。

我们知道,TCP连接相当于两根管道(双工,一个用于服务器到客户端,一个用于客户端到服务器),管道里面数据传输是通过字节码传输,传输是有序的,每个字节都是一个一个来传输。

例如客户端要向服务器发送Hello、World两个单词,只能是先发送Hello再发送World,没办法同时发送这两个单词。不然服务器收到的可能就是 HWeolrllod(注意是穿插着发过去了,但是顺序还是不会乱)。

接上面的问题,能否同时发送Hello和World两个单词能,当然也是可以的,可以将数据拆成包,给每个包打上标签。发的时候是这样的①H ②W ①e ②o ①l ②r ①l ②l ①o ②d。这样到了服务器,服务器根据标签把两个单词区分开来。实际的发送效果如下图:
在这里插入图片描述

二进制分帧

二进制分帧可以实现上面的效果,HTTP/2 把 HTTP 协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息。并行地在同一个 TCP 连接上双向交换消息。二进制分帧层在 应用层(HTTP/2)和传输层(TCP or UDP)之间。HTTP/2并没有去修改TCP协议而是尽可能的利用TCP的特性。

在这里插入图片描述
在二进制分帧层中, HTTP/2 会将所有传输的信息分割为帧(frame),并对它们采用二进制格式的编码 ,其中 首部信息会被封装到 HEADER frame,而相应的 Request Body 则封装到 DATA frame 里面。

HTTP 性能优化的关键并不在于高带宽,而是低延迟。TCP 连接会随着时间进行自我「调谐」,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐则被称为 TCP 慢启动。由于这种原因,让原本就具有突发性和短时性的 HTTP 连接变的十分低效。

HTTP/2 通过让所有数据流共用同一个连接,可以更有效地使用 TCP 连接,让高带宽也能真正的服务于 HTTP 的性能提升。

报文压缩

 在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费。

       HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

服务端推送

一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

       为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

http://www.lbrq.cn/news/1549999.html

相关文章:

  • 判断网站是否被k/惠州抖音seo策划
  • 广东网站建设服务公司/如何做网络营销推广
  • 阿里域名购买/seo软件视频教程
  • 免费虚拟主机控制面板/肇庆seo按天计费
  • 欧派网站谁做的/新东方
  • 优质校建设网站/seo网站推广目的
  • 怎么查什么时候做的网站/seo顾问公司
  • wordpress get_posts category/百度网站怎么优化排名靠前
  • 网站资源建设方案/网络服务商
  • asp与sql网站建设/成都关键词优化排名
  • 个人独资企业的优缺点/福建企业seo推广
  • 个人做网站花多少钱/百度商店应用市场
  • 中国购物网站排名/自己建网页
  • 深圳flash网站建设/seo培训学校
  • 淘宝客怎么样做网站/网络营销活动策划
  • 武汉 大型 网站建设/快速开发网站的应用程序
  • 桂林临桂区建设局网站/自动外链
  • 怎么做网站缩略图/网站优化外包
  • b2c模式的电子商务网站有哪些/站长工具关键词查询
  • 在线制作二维码网站/学校seo推广培训班
  • 网站开发公司排行/今日的新闻
  • idc销售网站php源码/seo优化工具软件
  • 电子商务网站建设的毕业论文/360关键词推广
  • 女做受网站/免费推广引流怎么做
  • 孝感58同城网站建设/百度竞价包年推广是怎么回事
  • 个人网站怎么做支付功能/2024最火的十大新闻
  • 南部县人民医院搬迁/优化一个网站需要多少钱
  • b2c平台网站建设/企业推广公司
  • 网站兼容手机/互联网广告推广好做吗
  • wordpress 无法登入/天津seo选天津旗舰科技a
  • Flutter 自定义 Switch 切换组件完全指南
  • Windows运维之以一种访问权限不允许的方式做了一个访问套接字的尝试
  • C语言网络编程TCP通信实战:客户端↔服务器双向键盘互动全流程解析
  • TensorRT-LLM.V1.1.0rc0:在无 GitHub 访问权限的服务器上编译 TensorRT-LLM 的完整实践
  • 基于Vue的个人博客网站的设计与实现/基于node.js的博客系统的设计与实现#express框架、vscode
  • Honor of Kings 101star (S40) 2025.08.17