让我们澄清一些事情:
我的理解是,http2 使文件连接等优化技术变得过时,因为使用 http2 的服务器只发送一个请求。
HTTP/2 呈现文件串联等优化技术somewhat已过时,因为 HTTP/2 允许通过同一连接并行下载许多文件。以前,在 HTTP/1.1 中,浏览器可以请求一个文件,然后必须等到该文件完全下载后才能请求下一个文件。这导致了诸如文件串联(以减少所需文件数量)和多个连接(允许并行下载的黑客)等变通办法。
然而,有一个反驳的观点认为,多个文件仍然存在开销,包括请求它们、缓存它们、从缓存中读取它们……等等。HTTP/2 中的开销大大减少,但并没有完全消失。此外,gzip 压缩文本文件对于较大的文件比单独 gzip 压缩许多较小的文件效果更好。但就我个人而言,我认为缺点大于这些担忧,并且我认为一旦 HTTP/2 无处不在,串联就会消失。
相反,我看到的建议是,最好保持文件大小较小,以便浏览器更有可能缓存它们。
这可能取决于网站的大小,但是如果网站使用 http2 并且希望专注于缓存,那么网站的文件应该有多小?
文件大小与是否会被缓存无关(除非我们谈论的是比缓存本身更大的真正海量文件)。将文件分割成较小的块更有利于缓存的原因是,如果您进行任何更改,则仍然可以从缓存中使用任何未触及的文件。如果您将所有 javascript(例如)放在一个大 .js 文件中,并且更改了一行代码,则需要再次下载整个文件 - 即使它已经在缓存中。
同样,如果您有一个图像精灵图,那么这对于减少 HTTP/1.1 中的单独图像下载非常有用,但如果您需要编辑它以添加一个额外的图像,则需要再次下载整个精灵文件。更不用说whole下载东西 - 即使对于仅使用这些图像精灵之一的页面也是如此。
然而,尽管如此,有一种观点认为长期缓存的好处被夸大了。看本文 http://www.nateberkopec.com/2015/11/05/page-weight-doesnt-matter.html特别是关于 HTTP 缓存的部分,它表明大多数人的浏览器缓存比您想象的要小,因此您的资源不太可能被缓存很长时间。这并不是说缓存不重要,而是说它对于在该会话中而不是长期浏览非常有用。因此,每次访问您的网站都可能会再次下载您的所有文件 - 除非他们是非常频繁的访问者,拥有非常大的缓存,或者不经常上网。
对于使用不支持 http2 的浏览器的用户来说,串联文件是否有好处?
可能吧。不过,除了 Android 以外,HTTP/2 浏览器支持其实非常好 http://caniuse.com/#search=Http%2F2因此,您的大多数访问者可能已经启用了 HTTP/2。
也就是说,在 HTTP/2 下连接文件并没有 HTTP/1.1 下没有的额外缺点。好吧,可能有人会说,可以通过 HTTP/2 并行下载许多小文件,而需要作为一个请求下载较大的文件,但我不认为这会减慢速度。没有证据证明这一点,但直觉表明数据仍然需要发送,因此无论哪种方式都会有带宽问题,或者不会。此外,尽管 HTTP/2 减少了很多,但请求许多资源的开销仍然存在。对于大多数用户和网站来说,延迟仍然是最大的问题,而不是带宽。除非你的资源真的很大,我怀疑你会注意到在 I've go 中下载 1 个大资源,或者在 HTTP/2 中将相同的数据分成 10 个并行下载的小文件之间的区别(尽管你会在 HTTP/1.1 中注意到) 。更不用说上面讨论的 gzip 压缩问题了。
因此,在我看来,继续连接一段时间并没有什么坏处。在某些时候,您需要根据您的用户配置文件来判断缺点是否大于优点。
在这种情况下使用更大的文件并使用 HTTP2 会不会有什么坏处?这样,运行任一协议的用户都会受益,因为站点可以针对 http 和 http2 进行优化。
绝对不会受到任何伤害。如上所述,在 HTTP/2 下连接文件(基本上)没有额外的缺点,而在 HTTP/1.1 下则没有。它在 HTTP/2 下不再是必需的,并且有缺点(可能会减少缓存的使用,需要构建步骤,使调试变得更加困难,因为部署的代码与源代码不同......等等)。
使用 HTTP/2,您仍然会看到任何网站的巨大好处 - 除了最简单的网站,它们可能不会有任何改进,但也没有负面影响。而且,由于较旧的浏览器可以坚持使用 HTTP/1.1,因此它们没有任何缺点。您何时或是否决定停止实施 HTTP/1.1 性能调整(例如连接)是一个单独的决定。
其实只是理由not使用 HTTP/2 的原因是其实现仍然相当前沿,因此您可能还不太习惯在其上运行生产网站。
**** 2016 年 8 月编辑 ****
这个帖子 https://99designs.ie/tech-blog/blog/2016/07/14/real-world-http-2-400gb-of-images-per-day/由于图像较多、带宽受限,该网站最近引起了 HTTP/2 社区的一些兴趣,作为第一个记录的 HTTP/2 实际上比 HTTP/1.1 慢的示例之一。这凸显了这样一个事实:HTTP/2 技术和理解仍然是新的,并且需要对某些站点进行一些调整。看来天下没有免费的午餐啊!值得一读,但值得记住的是,这是一个极端的例子,大多数网站在性能方面受到 HTTP/1.1 下的延迟问题和连接限制的影响,而不是带宽问题。