HTTP / 2协议如何工作的详细说明
我建议阅读HTTP教程第一的
HTTP / 2是HTTP协议的当前版本。由IETF(互联网工程任务组)委员会于2015年发布,由于其独特的功能,现在已被广泛采用。
HTTP / 2比HTTP / 1.1(当时可用的最新HTTP版本)性能更高。
HTTP / 2提供的减速功能非常吸引人,因此很快就被采用-通过对Web服务器进行简单的更改(因为HTTP / 2与HTTP / 1.1向下兼容100%),您的网站和Web应用现在可以正常工作自动更快,这反过来对您的用户和SEO都有利(因为速度是排名的关键因素)。
HTTP / 2如何比HTTP / 1.1快得多?原因很多,所有的原因都是为了减少先前版本的效率低下,并引入可使浏览器更快地提供资源的功能。
该协议新版本的主要功能是:
- 请求和响应多路复用
- 有效压缩HTTP标头
- 服务器推送
- 二进制通讯
多路复用
在HTTP / 2之前,每个TCP连接一次只能提供一个响应。
TCP是在其上构建HTTP的基础协议。 TCP停留在传输层,而HTTP停留在应用程序级别。
在单个TCP连接之上启用HTTP / 2的请求/响应多路复用,允许服务器使用相同的连接来服务多个请求,从而实现更快的通信。
这是单个更改,它将对您的应用程序带来巨大好处,并使一些优化技术过时,包括图像精灵(用于将多个图像合并到一个图像中,然后使用特殊的CSS技术对其进行“多路分解”) )和域分片,这是另一种用于防止浏览器限制到同一域的同时连接数量的黑客。
标头压缩
考虑到Cookie和其他标头值的正常使用,页面和资源上的HTTP标头可能会变得很大。压缩使HTTP的占用空间更小,从而减少了客户端和服务器之间交换的数据量。
服务器推送
服务器推送是一项功能,它允许向单个请求发送多个响应。由于服务器知道请求资源时,客户端将随后请求其他补充资源(例如CSS,JS,链接到页面的图像),因此服务器可以决定立即发送它们。
服务器无需发送HTML,而是等待浏览器对其进行解析并触发其他请求以获取资产,而是可以将其完全推送。
服务器还可以决定发送将来请求中可能需要的资源,预先优化下一个页面加载并将其放入客户端缓存。
请注意,服务器推送也可能有其自身的缺点-例如,您可能会冒着不必要的风险将过多的数据发送到客户端(可能已缓存在客户端上),因此请谨慎使用
二进制通讯
HTTP / 1.1使用基于文本的通信。 HTTP / 2使用二进制通信,它具有一些优点,包括解析效率更高,更不易出错且更紧凑。
未来会有什么发展?
HTTP/3正在开发中,并将根据HTTP-QUIC,一个实验项目。
QUIC是在传输层基于UDP(而不是TCP)的协议,这意味着与HTTP / 2和HTTP / 1.x相比,HTTP / 3将基于完全不同的技术堆栈。
更多网络教程:
- WebSockets简介
- HTTP请求如何工作
- HTTP请求标头列表
- HTTP响应标头列表
- HTTP与HTTPS
- 什么是RFC?
- HTTP协议
- HTTPS协议
- HTTP请求的curl指南
- HTTP缓存
- HTTP状态代码列表
- 什么是CDN?
- HTTP / 2协议
- 什么是港口
- DNS,域名系统
- TCP协议
- UDP协议
- REST API简介
- 如何在macOS中安装本地SSL证书
- 如何生成本地SSL证书
- 如何为HTTPS配置Nginx
- 一个简单的Nginx反向代理,用于从子文件夹中提供多个Node.js应用程序
- 什么是反向代理?