深入了解 HTTP/2:它的工作原理及其对 Web 的意义
已发表: 2023-02-092015 年,新版 HTTP 网络协议——HTTP/2 获批。 现在,它变得越来越流行:该协议已经支持 Apache 和 Nginx Web 服务器、Chrome、Firefox、Opera、Edge 和 Safari 浏览器以及移动设备。
HTTP/2 服务和站点的数量在不断增长。 在不久的将来,互联网正在等待向新协议的过渡,从而加速网站下载。
让我们看看这将如何影响网站建设、SEO 和其他方面。
什么是 HTTP/2?
HTTP/1.1 协议从 1999 年开始使用,随着时间的推移出现了一个重大问题。 与 1999 年流行的网站相比,现代网站使用了许多不同的元素:JavaScript 脚本、CSS 样式,有时还使用 Flash 动画。 当您传输所有这些时,浏览器和服务器会创建多个连接。
由于以下特性,HTTP/2 协议显着加快了网站速度:
- 连接:可以通过单个 TCP 连接发送多个请求,并且可以按任何顺序接收响应。 无需保留多个 TCP 连接。
- 线程优先级:客户端可以设置服务器的优先级——什么样的资源对他来说比其他资源更重要。
- 标头压缩:可以减小 HTTP 标头的大小。
- 服务端推送数据:服务端可以向客户端发送尚未请求的数据,例如基于用户将要打开的下一页的数据。
HTTP 2 协议的开发基于 SPDY 协议,由 Google 开发。 但谷歌已经宣布,它将拒绝对更有前途的 HTTP/2 提供进一步的 SPDY 支持。
阅读:为什么您的 WordPress 网站速度很慢以及如何加快速度?
HTTP/2 的主要特性
- 复用
- 服务器推送
- 标头压缩
- 流优先级
- 流量控制
HTTP 和 HTTP 2 之间的区别
对第一个协议所做的更改不需要对应用程序的工作方式进行很多更改。 虽然,新应用程序有一个优势,可以提高速度。 下面比较了两种协议之间的主要区别:
特征 | HTTP | HTTP2 |
---|---|---|
句法 | 高级语法相同 | 高级语法相同 |
数据框架 | 修改后的数据框架 | 增强的数据框架 |
查询 | 有限查询 | 更多查询 |
服务器响应 | 反应有限 | 增强的响应能力 |
高效网站 | 最小化请求 | 提高效率 |
队首阻塞 | 存在于 HTTP 中 | 在 HTTP2 中克服 |
复用 | 不存在 | 展示 |
标头压缩 | 不存在 | 展示 |
请求优先级 | 不存在 | 展示 |
下面是 HTTP/1 和 HTTP/2 之间基本区别的良好直观表示(由:http: //ruzhekov.com 提供)
HTTP/2 的优缺点
优点
- 提高页面加载速度
- 更好地利用网络资源
- 提升用户体验
- 更好地兼容现代网络技术
缺点
- 据说该协议不一致且复杂
- 违反协议分层原则
- 伴随着沉重的加密成本
- 与路由器等某些设备不兼容
- 缺乏机会加密
为什么世界需要 HTTP/2?
- HTTP 于 1991 年首次被描述,其最新版本 HTTP/1.1 于 1999 年获得批准,至今仍在使用。
- 多年来,网站规模显着增长,导致加载时间变慢,并限制使用 HTTP/1.1 的同时连接数。
- 已经实施了优化网站负载等临时解决方案,但它们仅提供短期解决方案。
- 谷歌工程师于 2009 年开始着手改进该协议,最终创建了 SPDY 协议,该协议速度更快且受大多数浏览器支持,但需要服务器端支持。
- HTTP/2 基于 SPDY 并向后兼容 HTTP/1.1。 没有立即升级的需要,但最终,站点在旧协议上的加载速度可能会变慢。
HTTP/2 真的更快吗?
HttpWatch Experts 进行了多项测试,发现 HTTP 2 的加速非常显着。
下面的截图显示了使用 HTTP/1.1 的页面下载速度:
在这张截图上——使用 HTTP 2 的结果:
下载速度提高了 23%。 HttpWatch 专家还指出,该技术尚未完全优化,预计实际加速可达 30%。
为什么 HTTP/2 工作得更快?
- 在 HTTP/2(多路复用)中的同一连接内发送的多个请求导致更快地加载静态元素
- HTTP/2 中 HTTP 标头的压缩减少了服务器和浏览器之间的数据量,释放了资源
- 通过引领潮流的浏览器(Google Chrome、Mozilla Firefox)支持 HTTP/2 的加密连接提高了安全性
- HTTP/2 中的优先级顺序发生变化,优先级是正确多路复用功能的理想方法
- HTTP/2 中缺少优先级配置会导致速度降低,因为稍后可以加载的资源将占用单独的条带和一部分电源。
为什么加快网站页面加载速度很重要?
- HTTP 2 支持不是 Google 的直接排名因素
- 下载速度是谷歌的重要排名因素
- HTTP/2 可以对网站速度产生积极影响,并因行为因素对排名产生积极影响
- 更快的页面具有更低的失败率,并可能导致更高的用户参与度
- Google Bot 即将支持 HTTP/2
- 随着搜索引擎改变算法,HTTP 2 可能会成为未来的排名因素。
对 Web 开发人员的好处
HTTP 2 可以让你摆脱老花样,旨在加速没有 HTTP/2 的页面加载。 我们列出了:
- 域分片或使用多个相关域下载文件以建立更多的 TCP 连接。
- 图片精灵——将图片组合在一个文件中以减少请求数量。 但是,必须首先完全加载这样的文件才能显示。 此外,处理大文件会消耗更多内存。
- 合并 CSS 和 JavaScript 文件,这样做也是为了减少请求数,同时也增加了内存使用量。
- 内联包含或将 CSS 和 JavaScript,有时甚至是图片放在 HTML 文件中,以减少连接数。 同时,直到加载整个文件后才显示页面。
- 没有 cookie 文件的域:从另一个没有使用 cookie 的域下载图像、CSS 和 JavaScript。
如何实施 HTTP 2?
要实现 HTTP 2,您需要执行以下步骤:
- 检查服务器支持:确保您的服务器软件支持 HTTP 2。Apache、Nginx 和 IIS 等流行的服务器软件内置了对 HTTP 2 的支持。
- 启用 HTTP 2:确认服务器支持 HTTP 2 后,您需要启用它。 启用 HTTP 2 的方法因您使用的服务器软件而异。
- 使用 HTTPS: HTTP 2 需要使用 HTTPS 的安全连接,因此您需要在服务器上安装 SSL 证书。
- 更新您的代码:如果您正在使用处理 HTTP 连接的库或框架,请确保它支持 HTTP 2。某些库可能需要更新才能使用 HTTP 2。
- 测试您的网站:进行必要的更改后,测试您的网站以确保它适用于 HTTP 2。检查浏览器控制台是否有任何错误或警告。
- 监控性能:定期监控您网站的性能,以确保它在 HTTP 2 下顺畅运行。
- 考虑性能优化:实施 HTTP 2 将提高您网站的性能,但仍可能有进一步优化的机会。 例如,将图像组合成精灵、压缩图像、减少 HTTP 请求的数量可以进一步提高性能。
结论
HTTP 2 向后兼容 HTTP 1.1,不需要迁移。 然而,由于网络服务器和浏览器采用 HTTP 2,站点优化技术可能需要更新以避免降低网站速度。
阅读: WordPress 中 HTTP 到 HTTPS 迁移的完整指南
将图像合并到 sprite 中可以改善压缩并减少数据下载,同时避免使用数据 URI 嵌入图像可以改善缓存。 在 HTTP 2 中不再需要域分片,因为它允许直接请求资源并且可以通过创建额外的连接来降低性能。
经常问的问题
HTTP2 有什么用?
HTTP2 是一种用于通过 Internet 传输数据的协议,可提高从服务器向浏览器传送网页、图像和视频等 Web 内容的速度和安全性。 与它的前身 HTTP 1.1 相比,它允许同时发送和接收多个请求,从而提供更快的页面加载和更高的效率。
HTTP 和 HTTP2 有什么区别?
HTTP2 是 HTTP 的更新版本,比其前身更快、更高效。 它使用单个连接来加载多个资源,而在 HTTP 中则需要多个连接。 HTTP2 还提供数据压缩和优先级排序,从而为用户带来更快的页面加载时间。
为什么 http2 没有被广泛使用?
由于兼容性和实现问题,HTTP2 并未得到广泛使用。 一些旧设备和软件不支持 HTTP2,需要专用服务器和 SSL 证书才能实现。