-
计算机网络HTTP:HTTP/1.x 和 HTTP/2
- WEB性能的终极目标
- 减少到客户端的延迟,让用户能够尽可能快的打开前端网页并进行相关交互。
- 尽可能发送少的数据给服务器,从服务器下载尽可能少的数据,尽可能减少往返(Round Trips)。
- HTTP/1.x 的缺陷
- 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求就会被阻塞。
- HTTP/1.0
- 缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个用户,也不记录过去的请求。
- 解决方法:添加头信息 --- 非标准的Connection字段Connection:keep-alive
- HTTP/1.1
- 改进
- 持久连接:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)
- 管道机制:即在同一个TCP连接里面,客户端可以同时发送多个请求
- 分块传输编码:即服务端每产生一块数据,就发送一块,采用流模式代替缓存模式
- 新增请求方式:PUT,DELETE,OPTIONS,TRACE,CONNECT
- 缺点
- 虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有很多请求排队等着。这将导致“队头堵塞”。
- 避免方式:一是减少请求数,二是同时多开持久连接。
- HTTP/2.0
- 特点
- 采用二进制格式而非文本格式:HTTP/1.1的头信息是文本,数据体可以是文本也可以是二进制。HTTP/2.0头信息和数据体都是二进制。
- 完全多路复用:HTTP/2.0复用TCP连接,在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了“队头堵塞”。
- 报头压缩
- HTTP协议无状态,导致每次请求都必须附上所以信息。所以,请求的很多头字段都是重复的,比如cookie,一样的内容每次都必须附带。
- 对于相同的头部,不必再通过请求发送,只需发送一次。
- 头信息使用gzip或compress压缩后再发送。
- 客户端和服务端同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同一字段了,只需发送索引号。
- 服务器推送
- 允许服务器未经请求,主动向客户端发送资源
- 通过推送那些客户端将会需要的内容到客户端的缓存中,避免往返的延迟。
-
相关阅读:
Python安装及编辑器UliPad安装
安装配置Django开发环境(Eclipse + Pydev)
VsSDK_sfx.exe 安装出错
[转]代码分析工具FxCop1.36之一:介绍与使用
[转]IBM Rational系列产品介绍
[转]C#控件——DataGridView单元格文本自动换行
[转]FrameWork4.0的兼容问题 .
【整理】C# ToString格式字符串整理(Format)(数字、日期和枚举的标准格式设置说明符)(SamWang)
[转]史上最好的20本敏捷开发书籍
[转]C#数字千分位问题
-
原文地址:https://www.cnblogs.com/xiaobaizzz/p/12301986.html
Copyright © 2020-2023
润新知