HTTP/1:HTTP性能优化

HTTP定义:

HTTP是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言,也是互联网的基石。

HTTP/1.1的进化史:

HTTP/0.9 => HTTP/1.0 => HTTP/1.1

超文本传输协议 HTTP/0.9:

需求很简单,用于在网络之间传递HTML超文本的内容,因此被称为超文本传输协议

由于需求很简单,只是用来传输体积很小的HTML文件。所以HTTP/0.9的实现有三个特点

  • 只有一个请求行,如GET /index.html用来获取index.html,并没有HTTP请求行和请求体
  • 服务器也没有返回头信息。因为服务器并不需要告诉客户端太多信息,只需要返回数据就可以。
  • 返回的文件内容是以ASCII字符流来传输的,因为都是HTML格式的文件。

被浏览器推动的 HTTP/1.0:

随着万维网的高速发展,带来了很多新的需求,因此出现了HTTP/1.0。

新的需求包括:
  • JavaScript
  • CSS
  • 图片
  • 音频、视频

等不同类型的文件。

HTTP/1.0实现的功能有:
  • 支持多种类型的文件下载(引入请求头和响应头)
accept: text/html
accept-encoding: gzip, deflate, br
accept-Charset: ISO-8859-1,
utf-8accept-language: zh-CN,zh
  • 引入了状态码
  • 为了减轻服务器的压力,提供了Cache机制,用来缓存已经下载过的数据
  • 在请求头中还加入了用户代理,以帮助服务器统计客户端的基础信息

缝缝补补的 HTTP/1.1:

HTTP的改进

  • 改进持久连接

原因:HTTP/1.0每进行一次HTTP通信,都需经历TCP连接、传输HTTP数据和断开TCP连接三个阶段。

问题:由于现在单个页面中的图片文件越来越多,如果在下载每个文件的时候都需要经历建立TCP连接,传输数据和断开连接,这将会增加大量无畏的开销

改进:HTTP/1.1中增加了持久连接的方法,它的特点是在一个TCP连接上可以传输多个HTTP请求,只要浏览器或者服务器没有明确断开连接,那么该TCP连接会一直保持。

  • 不成熟的HTTP管线化

HTTP/1.1 中试图通过管线化的技术来解决队头阻塞的问题

  • 提供虚拟主机的支持

HTTP/1.1的请求头中增加了Host字段,用来表示当前的域名地址,这样服务器就可以根据不同的Host值做不同的处理

  • 对动态生成的内容提供了完美支持

HTTP/1.1 通过引入Chunk transfer 机制来解决这个问题,服务器会将数据分割成若干个任意大小的数据块,每个数据块发送时会附上上个数据块的长度,最后使用一个零长度的块作为发送数据完成的标志。这样就提供了对动态内容的支持。

  • 客户端Cookie、安全机制
原文地址:https://www.cnblogs.com/zppsakura/p/14118658.html