切换到HTTP / 2是一个相对简单的性能获胜,可以显着提高网站速度,因此毫无疑问,在过去几年中,采用率已经大大提高。
尽管有明显的好处,但搜索引擎优化专家很少谈论HTTP / 2,而且我会说他们中的大多数人都很难解释它是如何工作的以及为什么它是必要的。
随着Google在搜索算法中更加重视网站速度,您无法忽略HTTP / 2以及它可以使网站更快的优势。
上个月,DeepCrawl (披露:我为DeepCrawl工作)与Distilled的Tom Anthony举行了网络研讨会,他解释了HTTP / 2是什么以及它为何重要。
与会者在网络研讨会期间提交了许多问题,Anthony已经花时间回答了每一个问题,因此您可以增加知识并为切换到HTTP / 2做好准备。
HTTP / 2的基础知识
只有当您对SEO感兴趣或者它有任何其他好处时,HTTP / 2才有价值吗?
它对SEO很有帮助,因为它对用户有好处,谷歌希望用户有良好的体验。
主要好处是用户的页面性能。
为什么有人不想使用HTTP / 2?有什么负面的吗?
没有HTTP / 2的原因很少。
它:
- 不是迁移所以不会影响SEO。
- 优雅地回退到HTTP / 1.1,因此不会阻止任何人访问该站点。
- 加快速度。
警惕服务器推送功能,因为这可能会对您产生负面影响 – 但如果您只是启用HTTP / 2,则默认情况下不会使用服务器推送。
HTTP / 2也能提高移动性能吗?
是的,它确实!
服务器启动HTTP2是否有任何技术要求?
是的,目前只有某些服务器软件可以支持HTTP / 2。
如果你的系统不能或者花费太多的努力,那么考虑使用CDN来实现它。
IT升级到HTTP2需要多长时间?
我在一小时内在小型网站上部署了HTTP / 2。
在企业网站上,我看到它已安排好几周。
这确实是您的网站规模和复杂程度以及您的团队有多忙的一个因素。
有没有一种简单的方法来判断一个站点是否在源代码中使用HTTP / 2?
重要的是要理解源代码不会因HTTP / 2而改变 – 这是对HTML和其他文件如何传递到浏览器的传递机制的改变,但文件本身保持不变。
如果您想查看某个网站是否使用HTTP / 2,请使用Chrome开发者工具并添加协议列。
还有一个Chrome扩展程序会立即告诉您网站是否使用HTTP / 2。
如果你在HTTP / 2上运行一个站点,你应该将HTTP / 1.1作为后备吗?
是的 – 仍有许多设备/机器人不支持HTTP / 2。
目前,如果您关闭HTTP / 1.1,则Googlebot无法抓取您的网站。
但是,没有理由不提供后备。
获得HTTP / 2买入
那么HTTP / 2意味着我们对页面调用次数的攻击性会大打折扣吗?
因为当我告诉他们他们的网站太慢时,我可以看到开发人员把它扔在我脸上。
不幸的是,综合浏览仍然是一个综合浏览量。
只有通过CDN部署才能看到服务器负载减少。
我们的新工程主管使用第三方工具来展示我们从迁移到HTTP / 2时所实现的性能优势。它表明我们移动到HTTP / 2的速度要慢25%。怎么可能?
我认为你可以构建一些病态案例,其中页面流由并行性来阻止。
想象一下,HTML需要加载一个CSS文件和100个图像。如果同时请求所有这些,那么您可能会达到带宽限制,这意味着CSS到达的速度比旧模型稍慢,这会占用最初为用户呈现页面的时间(即使所有资源都加载得更快)。
但是,我从来没有在现实中看到这一点,并且会惊讶于实际遇到的HTTP / 2速度较慢的网站。
此外,HTTP / 2的流优先级排序机制应该允许您抵消这一点(将CSS放在快速通道中)。
我被告知,CDN设置会从HTTP / 2中看到更多价值,因为我们运营的所有客户端站点都位于同一台服务器上。这是真的?并且在一台服务器上安装域名的设置是否还有HTTP / 2值?
我无法理解背后的逻辑“因为我们运营的所有客户端站点都安放在同一台服务器上,所以没有那么多来自HTTP / 2的价值”。
一台服务器是否负责多个站点不应该对HTTP / 2的好处产生任何影响。
但是,如果您的团队更容易部署CDN以获得HTTP / 2的好处,那么这也有效!
CDN如何帮助HTTP / 2?
内容分发网络(CDN)是否有助于HTTP2?
CDN可以帮助您的网站使用HTTP / 2,但它们也提供了许多其他好处。
例如,它们也意味着对您网站的许多请求不需要走得太远,这也会大大加快您的网站速度。
此外,他们可以做其他聪明的事情,如在飞行中优化您的图像等。
我如何寻找CDN?你能解释一下如何获得HTTP / 2吗?
为了部署HTTP / 2,您需要接收Web内容请求的服务器能够使用浏览器说出该语言。
最初打开安全连接时,服务器会告诉浏览器它是否可以说HTTP / 2。
在我的比喻中,您可以将此视为压路机司机询问服务器,因为他正在开车 – 然后当他回来时,他让浏览器知道他们是否可以发送多辆卡车!
因此,您需要升级/配置您的服务器软件(例如,nginx)才能够并且愿意使用HTTP / 2。
如果这不是您的团队或托管公司可以容纳的,那么您可以部署CDN。
然后CDN将位于您的服务器和您的Web用户之间,它可以代表您说HTTP / 2。
有各种各样的CDN提供商,但您应该看到的两个:
- CloudFlare: 一个很好的“开箱即用”解决方案,价格非常具有竞争力 – 因此非常适合小型网站。
- 快速:它有点贵,但非常灵活(如果你知道你在做什么),并且能够为更棘手的需求提供更复杂的行为!
这两个CDN都可以为您说HTTP / 2。
如果我使用CloudFlare来预测HTTP / 2,那么在我的服务器上激活它有助于进一步提高延迟吗?
目前,没有任何CDN实际上从CDN向原始服务器发送HTTP / 2,因此如果您部署了CloudFlare并将其用于HTTP / 2,那么您的服务器端根本无需做任何事情。
HTTP2是否需要使用CDN以及CDN如何处理对我网站的更改?它需要传播吗?如果是这样,全球需要多长时间?
它不需要使用CDN,没有。
它们只是实现它的简单方法。
为了在世界范围内传播,它将取决于CDN,但现在可能只需几秒钟 – 而且那个时间肯定不值得担心。
复
如果多路复用减少了与服务器的连接数量 – 这是否会提高整体服务器性能/资源?
我没有对此进行测量或测试,但我预计影响很小。
维护多个网络连接对于服务器来说并不困难 – 响应请求更多的是负载,而且不会发生太大变化。
如果您通过CDN路由部署,那么您将抵消一些服务器负载/带宽,因为CDN将能够代表您响应某些请求。
异步JavaScript加载是否意味着只需要一个请求来加载这些文件?
当您进行多路复用时,您仍然需要为每个资源发出请求(每辆卡车仍然只能携带一个文件)。
服务器推送可能是单个请求,但可以获得多个响应,携带各种文件。
但是,这需要在服务器端做出积极的决定。
HTTP / 2注意事项
由于与HTTP / 1.1相比,HTTP / 2的优化不同,这是否意味着您的开发团队需要不断优化两者的资源?
有些建议可能在HTTP / 1.1和HTTP / 2之间有所不同,但它们之间的差别很小。
主要的是域分片和精灵集。
我建议你先部署HTTP / 2然后再进行其他优化(例如,如果它们已经存在,就不要放弃精灵集)。
继续前进我认为我们会在这里看到更多关于最佳实践的清晰度,但一般来说,如果优化HTTP / 1.1流量,您将不会损害HTTP / 2流量。
但是,如果您的大部分流量都是HTTP / 2,那么这些工作的好处可能会大大减少,这可能不值得。
使用HTTP / 2会同时加载所有资源吗?是否有同时加载的资源数量的截止值,还是存在其他限制?
同时“流”(卡车在我们的路上!)的最大数量取决于服务器,但RFC(详细说明标准的文档)建议至少为100!
实际上,对于大多数网站来说,这很少会成为你必须担心的事情。
使用HTTP / 2时,资源的域分片是否有用,或者它现在会产生负面影响,因为它会打开一个新连接?(例如,www.example.com从cdn.example.com获取图像)
使用HTTP / 2时,几乎没有理由进行旧学校分片,其中有3个以上的子域,旨在克服每台服务器最多六个连接。
但是,如果你有一个“轻”的分片设置(CDN上单独的子域上的静态资源),那么有时很难轻易解开该设置,所以我不会太担心,也不会让我转移到HTTP / 2(在两个子域上)。
您是否认为GZIP / Brotli参与网站等式的速度?关于它们实现HTTPS / 2和GZIP / Brotli的方式/方式,CDN似乎变化很大
因此,GZIP和Brotli对于大多数现在资源非常庞大的网站肯定是有帮助的。
Brotli在某些领域仍然缺乏支持,但GZIP现在非常普遍。
HTTP / 2实际上通过引入称为HPACK的新压缩标准使这一点更加复杂化。
它允许我们压缩HTTP头部分,这实际上比它听起来更有影响力。
但是,它并没有改变资产的GZIP / Brotli问题。
John Henshaw提到Chrome可以使用’importance’属性来实现它。HTTP / 2是否有可能覆盖我们硬编码的那个,比如FCP,FMP目的?
HTTP / 2标准允许“流优先级划分”,这实际上允许您将某些请求指定为比其他请求更重要。
我不知道这是否是Henshaw所说的,但Chrome可能是优先考虑通过启发式方法分配资源,他们试图找出更重要的东西(而不是直接指定它)。
开箱即用,HTTP / 2不会干扰这些启发式算法,但HTTP / 2流优先级排序机制可以通过指定资源的相对优先级以及依赖关系来实现更细粒度的控制。