HTTP/1: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:HTTP性能优化

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

HTTP/1:HTTP性能优化

不成熟的HTTP管线化

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

提供虚拟主机的支持

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

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

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

客户端Cookie、安全机制

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgffgp.html