Web性能优化:升级HTTP/2

Posted ExcellentFramework

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web性能优化:升级HTTP/2相关的知识,希望对你有一定的参考价值。

HTTP/2时代已经开启,不管是在HTTP1.X上苦苦做性能优化的你,还是没怎么做性能优化的你,都得该考虑升级HTTP/2了。因为HTTP/2的目的就是通过多路复用来减少延迟,通过头部压缩减少开销,同时增加对请求优先级和服务器端推送的支持。HTTP/2还带来其他协议层面的辅助实现,比如新的流量控制、错误处理和更新机制。所以我们应该在应用中好好利用它。从2015发布至今,一些Web服务器和多数的浏览器也都已经兼容HTTP/2。移动端android5.0+、ios9.0+开始兼容。

我们的Web服务器使用的是nginx,下面就参考NginX的白皮书《HTTP/2 for Web Application Developers》对NginX的HTTP/2升级做下实践介绍。

如下示意图,NginX与客户端建立的HTTP/2连接,与应用服务器可继续保持HTTP1.X连接。所以,HTTP/2可以分阶段升级,当前先支持客户端到Web服务器的连接,后续再升级Web服务器到应用服务器的连接(tomcat9开始支持HTTP/2,目前发布了beta版本)。


升级只需以下几步:

  1. 启用SSL

    HTTP/2本身是不强制SSL的,但浏览器是要求的,所以需要先支持HTTPS访问。且站点全覆盖HTTPS也是大家已达成的共识,所以我们早早升级过,没升级的朋友先去支持HTTPS吧。这步我们就直接跳过了:)

  2. 升级OpenSSL到1.0.2或以上版本

    (1)下载OpenSSL

    (2)解压

    tar –zxvf openssl-1.0.2n.tar.gz

    (3)配置NginX

    ./configure --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl=/解压目录/openssl-1.0.2n

    (4)编译&安装

    make && make install

    (5)开启HTTP/2

    server配置增加http2参数

    server {

    listen 443 ssl http2 default_server;

    ssl_certificate server.crt;

    ssl_certificate_key server.key;

    }

    (6)重启NginX

    # nginx -s reload

    (7)验证

    升级前后访问对比

    Web性能优化:升级HTTP/2

    升级前访问图示

    Web性能优化:升级HTTP/2

    升级后访问图示

    会发现连接数骤减,Protocol变成了h2。连接数的减少表明节省了多次连接的握手时间,降低了服务器的连接数损耗。

    你可能会问不支持HTTP/2的客户端怎么办?请放心,HTTP/2是向前兼容的,不支持的HTTP/2继续用HTTP1.X协议访问即可。

  3. 去掉HTTP1.1的优化项

    域名分区、文件拼接、图片精灵、内嵌文件等都要去掉,在HTTP/2下都是反模式并降低了性能。


到此完成现阶段的HTTP/2升级,大家可以动手尝试操作了。



  • 关于HTTP/2协议

详细内容可以阅读百度开源的“HTTP2中英对照版”。

这里列下所增加的5个重要特性来吸引下大家:)

  1. 单一持久连接:一个网页只用一个连接

  2. 多路复用:请求和答复的消息帧在同一个连接上传输,解决了队首阻塞问题。

  3. 头部压缩和二进制分帧:头部可只推送差异数据;消息分解为互不依赖的二进制帧。

  4. 请求优先级:决定交付次序。

  5. SSL加密:支持SSL,性能基本无损耗且更安全。


  • 关于Web性能优化

难道升级了HTTP/2协议后就不用做性能优化了吗(黑人问号脸)?当然不是,HTTP/2的传输层仍然是TCP,所以对TCP的优化仍需继续。另外只要通过网络传输,追求传输内容的“少”和“小”就不能回避。

看下我们在《Web性能权威指南》所抽取HTTP的脑图或许更清晰,Web性能要点仍是持续关注的方面。对于性能的追求,只能是未完待续....


引用:

《HTTP/2 for Web Application Developers》

https://www.nginx.com/wp-content/uploads/2015/09/NGINX_HTTP2_White_Paper_v4.pdf

《Web性能权威指南》[美]Ilya Grigorik 著  李松峰 译

“HTTP2中英对照版”

https://github.com/fex-team/http2-spec



以上是关于Web性能优化:升级HTTP/2的主要内容,如果未能解决你的问题,请参考以下文章

mysql性能优化方法(硬件升级系统配置表结构设计SQL语句)

DB2性能优化 – 如何通过调整锁参数优化锁升级

7/26 -​ 嗨,送你一张 Web 性能优化地图

WEB性能优化资料

「请查收」一份丰富的 Web 性能优化指南

集中式数据库性能优化