前面两篇记录了HTTP的历史和网络请求、页面渲染的过程以及HTTP/1的一些问题,本篇就来讲一下迁移HTTP/2需要考虑的一些问题。
迁移HTTP/2说简单无非就是升级到支持 h2 的Web服务器或在你的网站前面加上支持 h2 的CDN。这对没有历史包袱或实验性的产品当然是对的,但实际情况并非如此。多数站点是从 HTTP/1一路走来的,所以得考虑向前兼容。即考虑的情况如下或者更多:
用户使用的浏览器对 h2 的支持情况
Web服务器对 h2 的支持情况
迁移到TLS 的可能性
网站上的第三方资源
如何兼容旧版本客户端
网站基于 h2 的优化(以后和 h2 性能篇一起讲)
浏览器对 h2 的支持
在升级 h2 之前,要先查看自己用户使用的浏览器对 h2 支持情况的数据,下面是 caniuse.com 官网的数据:
这些浏览器的数据一般是从自己统计平台或者第三方平台获取,比如:百度统计、友盟等。
Web服务器对 h2 的支持
在权衡之后,决定升级。首先要对当前站点使用的服务器进行改造,那我们就要考虑现在使用的服务器有对应的版本支持 h2 吗以及当前的业务允许我们去升级到对应版本吗?下面列出了一些服务器对 h2 的支持:
迁移到TLS
因所有的主流浏览器只能访问基于 TLS 的 h2,所以在升级的时候同样要保证对 TLS 的支持。增加对 TLS 的支持需要考虑如下问题:
了解当前在使用的Web服务器:每种服务器配置 HTTPS 的方式略有差异
获得证书:获取渠道有自签名证书、从Let's Encrypt获取和花钱购买
保护私钥
为增加的服务器负载做准备:增加TLS的支持,同时也增加了一些消耗,比如:握手时间、加解密时间等。优化的宗旨就是:复用之前的连接,减少握手和加解密的时间
紧跟潮流:安全是不断变化的世界,紧跟变化很重要
定期检测:定期使用工具检测 TLS 配置(https://www.ssllabs.com)
网站的第三方资源
第三方资源对我们来说有时很重要,就像上面说的浏览器统计数据等。有时这些数据对公司的技术决策,甚至业务发展都有帮助。可又因为第三方资源相对独立,我们没有办法对其操控,所以在升级 h2 的时候需要考虑如下问题:
第三方资源是否支持 HTTPS?
是否有计划支持 h2 ?
是否对性能优化,作为关键考量指标?
第三方资源对页面性能的影响举足轻重,需要多加考虑。
如何兼容旧版本客户端
有些用户不喜欢尝试新鲜事物,所以你的用户中可能会存在使用旧版本客户端的,但这些用户又是你的金主但迁移到 h2 又势在必行,那如何解决呢?提供 HTTP/1的备用站点,供旧版本客户端访问并给出版本升级的提示。
新技术是美好的,但升级之路并不是一帆风顺。
前端路上的益友