HTTP协议于1991年引入,至今已有近30年的历史。自第一个文档化版本(后来称为0.9)以来,它已经经历了一段相当长的历程。在本文中,我们将简要回顾HTTP协议的发展历史,重点介绍HTTP/2带来了什么,以及我们如何从中获益。我们将使用Node.js服务端来实现它。
HTTP协议简史
HTTP的第一个版本只能传输超文本标记语言(HTML)文件,因此我们称之为超文本传输协议。它真的很简单,唯一可用的方法就是GET。它没有HTTP头文件或状态代码。如果出现问题,服务器可以使用带有错误描述的HTML文件进行响应。
1996年1.0版本出现了。与前一个版本相比,它进行了许多改进,其中最重要的是状态代码、POST和header等附加方法。现在,我们可以使用Content-Type头来传输普通HTML之外的文件。
1997年发布的HTTP/1.1引入了一些其它的改进。除了添加像OPTIONS这样的方法外,它还引入了Keep-Alive头。它允许一个连接对多个HTTP请求保持打开状态。因为这点,连接不必在每次请求之后关闭,然后再重新打开。在HTTP/1.1中,我们通常一次只能有6个连接。例如,如果其中一个请求由于服务器上的某些复杂逻辑而卡住,那么它们中的每一个都可以一次处理一个请求,整个连接就会冻结并等待响应。这个问题称为前端阻塞。