以文本方式查看主题

-  安易免费财务软件交流论坛  (http://anyicw.com/bbs/index.asp)
--  电脑知识交流  (http://anyicw.com/bbs/list.asp?boardid=11)
----  [灌水]了解Cloudflare 对HTTP/2的改进,助力实现更快的网络  (http://anyicw.com/bbs/dispbbs.asp?boardid=11&id=324700)

--  作者:蓝色惆怅
--  发布时间:2021/11/1 9:04:50
--  [灌水]了解Cloudflare 对HTTP/2的改进,助力实现更快的网络

  图片点击可在新窗口打开查看

  HTTP/2承诺了一个更快的网络,而Cloudflare很久以前就为我们所有的客户推出了HTTP/2访问。但是HTTP/2的一个特性——优先级,并没有达到预期的效果。问题不在于它从根本上被破坏了,而在于浏览器实现它的方式。

  现如今,Cloudflare正在推动对HTTP/2优先级的改进,使我们的服务器能够控制优先级决策,从而真正大幅提高网络速度。

  历史上,浏览器一直控制着网站内容的加载方式和加载时间。今天,我们将彻底改变所有付费计划的模式,将控制权直接交给网站所有者。客户可以在Cloudflare控制面板的Speed选项卡中启用“增强的HTTP/2优先级”:该选项卡使用改进的调度方案覆盖了浏览器的默认设置,从而显著提高了访问者的体验(我们已经在多个场合看到50%的速度提升)。有了Cloudflare Workers,站点所有者可以更进一步,完全根据他们的具体需求定制访问体验。

  背景

  网站页面由数十个(有时候是数百个)独立的资源组成,浏览器将这些资源加载并组装到最终显示的内容中。这包括用户与之交互的可见内容(HTML、CSS、图像)以及站点本身的应用程序逻辑(JavaScript)、广告、跟踪站点使用情况的分析和市场跟踪指向标。加载这些资源的顺序对用户查看内容和与页面交互所需的时间有很大影响。

  浏览器基本上是一个HTML处理引擎,它遍历HTML文档,按照从HTML开始到结束的顺序执行指令,并在此过程中构建页面。对样式表(CSS)的引用告诉浏览器如何设置页面内容的样式,浏览器将延迟显示内容,直到完成样式表的加载(这样它便知道如何设置将要显示的内容的样式)。文档中引用的脚本可以有几种不同的行为。如果脚本被标记为“async(异步)”或“defer(延迟)”,则浏览器可以继续处理文档并运行脚本代码(只要脚本可用)。如果脚本没有被标记为“async(异步)”或“defer(延迟)”,那么浏览器必须停止处理文档,直到脚本被下载和执行之后才能继续。这些脚本被称为“阻塞”脚本,因为它们阻止浏览器继续处理文档,直到它们被加载和执行。

  HTML文档分为两部分。<head>在文档的开头,包含浏览器显示内容所需的样式表、脚本和其他指令。文档的<body>位于标题之后,它包含在浏览器窗口中显示的实际页面内容(然而脚本和样式表也可以在body中显示)。在浏览器处理到文档主体之前,用户看不到任何显示内容,页面将保持空白,所以尽快通过文档头部是很重要的。如果你想更深入地了解细节,“HTML5 rocks”将提供一个很棒的教程,介绍浏览器的工作原理。

  浏览器通常负责确定加载构建页面以及继续处理文档所需的不同资源的顺序。在使用HTTP / 1.x的情况下,浏览器一次性向一台服务器请求的内容数受限(通常为6个连接,而每个连接一次只能请求一个资源),因此,浏览器按事物的需求严格控制着加载顺序。而使用HTTP / 2,事情会有很大改变。浏览器可以立即请求所有资源(至少可以在知道这些资源后立即请求),并且它向服务器提供了有关如何交付资源的详细说明。

  最佳资源排序

  Cloudflare优先级划分方案包含64个优先“级别”,每个优先级中都有若干资源组,这些资源组决定它们之间如何共享连接:

  图片点击可在新窗口打开查看

  在继续进入下一个较低优先级之前,将转移较高优先级的所有资源。

  在给定的优先级内,有3个不同的“并发”组:

  0:并发“0”组中的所有资源都按请求的顺序发送,使用100%的带宽。只有在下载了所有并发“0”组资源之后,才会考虑相同级别的其他组。

  1:并发“1”组中的所有资源按请求顺序发送。可用带宽平均分配给并发“1”组和并发“n”组。

  N:并发“n”组中的资源是并行发送的,从而在它们之间分配可用于该组的带宽。

  实际上,并发“0”组对于需要顺序处理的关键内容(脚本、CSS等)非常有用。并发“1”组对于不太重要的内容非常有用,这些内容可以与其他资源共享带宽,但是资源本身仍然可以从顺序处理中获益(异步脚本、非渐进式图像等)。并发“n”组对于从并行处理(渐进图像、视频、音频等)中获益的资源非常有用。

  Cloudflare默认优先级

  启用后,增强的优先级排序将实现上述资源的“最佳”调度。应用的具体优先级如下所示:

  图片点击可在新窗口打开查看

  这种优先级方案允许按顺序发送渲染阻塞的内容,然后并行发送可见图像,然后在一定程度上共享页面内容的其余部分,以平衡应用程序和内容加载。需要注意的是,并不是所有的浏览器都能区分不同类型的样式表和脚本,但是在所有情况下这一方案都能显著提高速度。默认情况下速度会快50%,尤其是对于Edge和Safari用户来说:

  图片点击可在新窗口打开查看

  调整和控制响应优先级的能力是未来许多工作将从中受益的基本构件。我们将在它的基础上实现我们自己的高级优化。而通过在Workers中展示它,我们也向站点和研究人员开放了它,以试验不同的优先级策略。通过应用程序市场,公司也可以在Workers平台上构建新的优化服务,并将其提供给其他站点使用。

  如果您使用的是Pro计划或更高版本,请转到Cloudflare信息中心中的“速度”标签,然后启用“增强的HTTP / 2优先级”以加速您的网站。