HTTP 1.x 是我们都熟悉的HTTP版本,它是一个老的协议,在我们还不知道万维网将会是什么样子之前,它就已经被设计出来了。当它做这项工作的时候,它显得并不很有效率,因为我们需求的比它当初设计的要复杂的多的多。
为了让使用HTTP1的网站在可接受的时间内加载完成,我们开发了一系列的技术;事实上是技巧;来竭力提升这个老协议的性能,它们是:
Spriting(雪碧图):将多张图片组合成一张图片,使用CSS来在特定的位置显示图的一部分。
Concatenating:将多个CSS或JS文件组合成一个大文件。
从一个cookie-less域名提供素材。
Sharding:创建不同的域名或子域名来提供素材,如图片。
前两项技术的目地是避免大量的HTTP 请求。在HTTP1中,HTTP请求是个很高昂的事情,它消耗大量的时间,每个请求可能都会被cookie这些必须作为请求的一部分的东西装满,它们都是未经压缩的。把一堆的东西连成一块并把它做完要比保持请求不同的资源还要快。
第三项技术用于最小化获取素材需要的时间,如果设置了cookie,就必须将它随每个请求发送到请求的域名,这在连接中添加了大量的”浪费的“空间。如果你的素材在不同的域名且不使用cookie,对这些文件的请求将不会随之发送cookie,也就会快一点。
最后一项技术sharding,是因为浏览器过去每个域名只允许同时建立两个请求. 如果你给你的一些素材创建一个新的域名, 你将会获得浏览器允许的双倍的同时连接来获得你的文件.因此, 你可以更快的下载网站内容. 实际上, sharding在最近的几年并不很有效因为浏览器供应商认为“两个连接”的限制是愚蠢的, 他们忽略了它.
不要使用这些HTTP1基础上的最佳实践在一个通过HTTP2提供服务的网站上.
HTTP2就要到来了, 基于SPDY,它让所有事情都变得更有效率.这同时意味着所有的HTTP1性能技术是不合适的.它们会使HTTP2网站变慢,而不是更快- 所以不要使用它们.
HTTP2让多请求的花费大大减小,因为许多技术它都自己做了.
它可以在较长的时间内让连接保持开启以便重新使用, 所以不需要像HTTP1那样每个请求都花费时间握手.
HTTP2同时使用压缩, 不像HTTP1, 所以请求的大小显著减小 - 因此更快.
HTTP2多路传输; 它可以在一个连接中同时发送和接收多个事物.
所有这些意味着不仅旧的HTTP1技术不再需要,而且它们实际上会让事情变得更慢。你可能要加载被浏览网页不需要的素材(concatenation和spriting似乎就是做这个的),sharding调用DNS查找也会让事情慢下来,尽管HTTP2意味着你从一开始就不需要shard。
总而言之,当你在给一个网站开发前端的时候,而且你知道这个网站将要通过HTTP2服务,你需要确保没有使用旧有的HTTP1性能技术,它们对HTTP2下的网站并不合适。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务