HTTP学习10_实体数据_连接管理
2024-11-21 20:47:27
本篇文章记录HTTP内容编码,协商质量,连接管理等HTTP相关内容
2291
HTTP的实体数据
content-type(内容类型):
HTTP使用了电子邮件系统里的“多用途互联网邮件扩展”(Multipurpose Internet MailExtensions),简称为 MIME。以便于发送ASCII码以外的任意数字,常见的有
- text: text/html 超文本文档 text/plain纯文本文档 text/css样式表
- image: image/gif gif图像 image/jpeg jpg图像 image/png png图像
- audio/video: audio/mpeg mpeg视频文件 video/mp4 mp4视频文件
- application: application/json json数据格式 application/javascript js文件 application/pdf pdf文件 application/octet-stream 二进制文件
Encoding-type(编码类型):
- gzip:压缩格式,也是互联网上最流行的压缩格式;
- deflate:zlib(deflate)压缩格式,流行程度仅次于gzip;
- br:一种专门为 HTTP 优化的新压缩算法(Brotli)。
- Accept字段标记的是客户端可理解的 MIME type,可以用“,”做分隔符列出多个类型,让服务器有更多的选择余地。
- 服务器会在响应报文里用头字段Content-Type告诉实体数据的真实类型。
- Accept-Encoding字段标记的是客户端支持的压缩格式。
- 服务器可以选择其中一种来压缩数据,实际使用的压缩格式放在响应头字段Content-Encoding里。
- Accept-Language字段标记了客户端可理解的自然语言,也允许用“,”做分隔符列出多个类型。
- 服务器应该在响应报文里用头字段Content-Language告诉客户端实体数据使用的实际语言类型。
内容协商的质量值:
Accept: text/html,application/xml;q=0.9,*/*;q=0.8
它表示浏览器最希望使用的是 HTML 文件,权重是 1,其次是 XML 文件,权重是 0.9,最后是任意数据类型,权重是 0.8。服务器收到请求头后,就会计算权重,再根据自己的实际情况优先输出 HTML 或者 XML。
服务器需要分段加载时,会在响应字段加一个Content-Range。
HTTP的连接管理:
短连接:
HTTP遵循的是TCP/IP协议,每次连接需要三次握手,断开也需要四次挥手。
长链接:
针对短连接暴露出的缺点,HTTP 协议就提出了“长连接”的通信方式,需要关闭时要让客户端在请求头加上Connection: close。
队头阻塞:
是有HTTP的“请求-应答”模式导致的,因为 HTTP 规定报文必须是“一发一收”,这就形成了一个先进先出的“串行”队列。队列里的请求没有轻重缓急的优先级,只有入队的先后顺序,排在最前面的请求被最优先处理。
如果队首的请求因为处理的太慢耽误了时间,那么队列里后面的所有请求也不得不跟着一起等待,结果就是其他的请求承担了不应有的时间成本。
如何解决这个问题呢,虽然可以加大并发数,但是为了性能优化,最好使用域名分片技术,多开几个域名指向同一个服务器,就可以缓解此问题。多核服务器能更好的应对此问题。
引用2019年罗剑峰的透视HTTP协议