这种低效的资源等待就是为什么像连接 JavaScript 或 CSS 文件这样的优化可以帮助您的网站加载更快的原因。但这样的改革只是权宜之计。虽然您可以(并且应该)、更小的请求,但只有在我们“修复道路”并改善网络通信的基本方式时,我们才能真正进入下一个性能水平。具体来说,我们需要找到更好的方法来利用这些网络连接。
这就是 HTTP/2 的用武之地。
解决方案:HTTP/2
从本质上讲,HTTP/2 是关于更有效地 电话号码资源 利用底层网络连接。 HTTP/2 改变了请求和响应在网络上的传输方式,这是以前版本的 HTTP 的一个重大限制。
HTTP/2 的工作原理是与服务器建立单个连接,然后通过该连接“多路复用”多个请求以同时获得多个响应。它看起来像这样:
浏览器使用相同的连接
但不再一次请求一个项目。这里我们看到浏览器 通过绘制所有可能性 接收到文件#3(可能是一张图片)的响应头,然后接收到文件#1的响应主体。然后,在继续处理文件#2之前,开始接收文件#3的响应主体。
把多路复用想象成去杂货店,只需给你的配偶打一次电话 邮寄线索 就可以得到完整的清单:“好的,我们需要牛奶、鸡蛋和黄油。检查一下。”将其与 HTTP/1.1 进行比较,这就像反复呼叫您的配偶:“我们需要牛奶吗?好的,再见。” “你好。我们还需要鸡蛋吗?是的,没错。” “好的,抱歉,最后一个问题,我们还需要面粉吗?不,好吧。”
所有数据都可以通过该连
接更高效地连接。服务器可以在准备好时向浏览器提供数据。不再有“发出请求;等待时不做任何事;下载响应”的循环。尽管理解起来有点复杂,但这种方法有几个优点。
首先,当您等待某个资源完成下载时,网络连接不会处于空闲状态。例如,您的浏览器实际上可以在图像 1 完成下载之前完成图像 2 的下载,而不是等待一个图像下载完成后再开始下载第二个图像。
这也可以防止所谓的阻止阻塞:当大型/缓慢的资源(例如 1 MB 的背景图像)阻止所有其他资源下载,直到它们完成为止。