Cloudflare发布可加速页面加载的Early Hints功能

Cloudflare宣布开始支持能够有效提升浏览器页面加载性能的Early Hints技术,而这项技术,除了Google Chrome 94开发频道版本已经支持之外,Microsoft Edge和Mozilla Firefox也都打算支持。

Early Hints的概念,是在浏览器向服务器发出请求,等待收到回应之前,由边缘网络先发送页面加载提示给浏览器,让浏览器先开始准备渲染页面需要的资源,当浏览器收到服务器回应后,就能够更快速地完整渲染。

官方提到,Early Hints在他们的初始测试中,可以提升浏览器首次访问网站页面30%以上的加载速度。目前Early Hints已经以测试功能推出,Cloudflare用户可以在仪表板的设置中,请求激活Early Hints。

浏览器访问网站时需要收到指令,确定需要渲染的内容和取用的资源,才能完整搭建出网页页面,而这些指令来自于服务器的回应,由于发送这些回应的服务器,通常需要时间编译资源,因此这个回应的时间,被称为服务器思考时间,当服务器忙碌时,浏览器便会进入空闲状态,直到收到服务器的指令才能开始动作。

而Early Hints能够在服务器思考时间,异步地向浏览器发送提示,让浏览器在来源服务器还在编译时,就先开始加载资源,借由在浏览器收到完整回应之前,先发送指令给浏览器,可以让浏览器更快地加载网页,因此终端用户能够获得更佳的浏览体验。

过去也有许多尝试解决这个问题的方法,特别是HTTP/2的服务器推送功能,但服务器推送存在问题,就连Chrome都打算要弃用和删除这项功能,在Chrome的网络论坛讨论要删除HTTP/2和gQUIC的讨论流中,负责Chrome网页性能的工程师Pat Meenan提到,只要服务器推送能够智能地完成,不推送已经存在于缓存中的资源,而且在CDN边缘回传到来源服务器要求HTML时,刚好填补浏览器等待时间,那看似是一个良好的解决方案。

可惜的是,在实际情况中,同时满足这些条件的时机非常罕见,Pat Meenan表示,几乎在所有情况下,推送的资源最终都会阻塞HTML、CSS和渲染资源,延迟HTML是特别糟糕的情况,因为会同时延迟浏览器对页面所有资源的探索。而且事实上,也仅有部分浏览器和服务器支持推送功能,主要的CDN厂商则认为该功能实例难以实行,因此也未大规模支持。

Cloudflare提到,严格来说,Early Hints是一个网页标准,定义了新的HTTP状态代码103 Early Hints,其定义了客户端和服务器之间新的交互行为,在服务器准备200 OK回应时,Cloudflare系统便会先向系统发送103,并包含呈现网页所需要资源的提示,该提示有助于加速页面加载,以有效减少用户可感知到的延迟。

在服务器回应编译完成前,就可以让浏览器在服务器思考时间接到提示,预期接下来需要加载并获取需要的资源,这些资源包含浏览器渲染页面需要的内容、缓存内容和其他启发式方法,以准备显示页面,直到服务器回传完整的回应。由于Cloudflare位于客户端和服务器的边缘网络,因此能够很好地代替服务器,向客户端发出预先加载提示。

Cloudflare用户不用任何变更,就能够应用这项新技术,Cloudflare位于网络边缘,除了可以快速提供提示之外,Cloudflare只要看过客户与其最终用户的请求和回应资料流,就可以使用这些资料自动产生提示。用户可以将Early Hints结合rel=preconnect使用,来解决资料从未经请求过的问题。

官方解释,现在网页动辄加载数百个第三方资源,并且与外部来源创建连接和TLS对话,花费不少时间,在服务器思考时间,能够预先与第三方进行连接,也有助于加速页面加载。未来,Cloudflare准备提供Smart Early Hints功能,借由使用机器学习技术,来产生Early Hints。

目前Cloudflare开始与各家浏览器合作,以实现Early Hints,Chrome、Edge和Firefox都决定要支持Early Hints,目前用户可以在Google Chrome 94版本,看到Early Hints实际带来的性能加速效果。

发表评论