我们的网站正在考虑转换为http2。
我的理解是 http2呈现文件连接过时的优化技术,因为使用http2的服务器只发送一个请求。
相反,我看到的建议是最好保持较小的文件,以便它们更有可能被浏览器缓存。
这可能取决于网站的大小,但如果网站的文件使用http2并且想要专注于缓存,那么该网站的文件应该有多小?
在我们的例子中,我们的许多单独的js和css文件属于1kb到180kb的范围。 Jquery和bootstrap可能更多。累积起来,我们网站上新下载的页面通常不到900 kb。
所以我有两个问题:
这些文件大小是否足够小,可以被浏览器缓存?
如果它们小到可以缓存,那么对于使用不支持http2的浏览器的用户来说,连接文件是否合适。
在这种情况下拥有更大的文件大小并使用HTTP2会不会有害?这样,运行任一协议的用户都会受益,因为可以针对http和http2优化网站。
答案 0 :(得分:8)
让我们澄清一些事情:
我的理解是http2渲染文件连接等优化技术已经过时,因为使用http2的服务器只发送一个请求。
HTTP / 2渲染优化技术,如文件串联有点已过时,因为HTTP / 2允许许多文件在同一连接上并行下载。以前,在HTTP / 1.1中,浏览器可以请求文件,然后必须等到该文件完全下载才能请求下一个文件。这导致了解决方法,如文件串联(减少所需文件的数量)和多个连接(允许并行下载的黑客攻击)。
然而,有一个反驳论点,即仍然存在多个文件的开销,包括请求它们,缓存它们,从缓存中读取它们等等。它在HTTP / 2中大大减少但是没有消失完全。另外,gzipping文本文件在较大的文件上工作得更好,而不是分别对大量较小的文件进行gzipping。就个人而言,我认为其缺点超过了这些担忧,我认为一旦HTTP / 2无处不在,连接就会消失。
相反,我所看到的建议是,保持较小的文件大小以便更有可能被浏览器缓存更好。
这可能取决于网站的大小,但如果网站的文件使用http2并希望专注于缓存,它应该有多小?
文件大小与是否缓存无关(除非我们讨论的是比缓存本身更大的真正大量文件)。将文件拆分为较小块的原因更适合缓存,因此如果进行任何更改,则仍可以从缓存中使用任何未触摸的文件。如果你在一个大的.js文件中有你所有的javascript(例如)并且你改变了一行代码,那么整个文件需要再次下载 - 即使它已经在缓存中了。
同样,如果您有一个图像精灵地图,那么这对于减少HTTP / 1.1中的单独图像下载非常有用,但如果您需要编辑它以添加一个额外的图像,则需要再次下载整个精灵文件例。更不用说下载了整个的东西 - 即使是那些只使用其中一个图像精灵的页面。
然而,尽管如此,有一种思路认为长期缓存的好处已经过时了。请参阅this article,特别是有关HTTP缓存的部分,该部分显示大多数人的浏览器缓存比您想象的要小,因此您的资源很可能不会被缓存很长时间。这并不是说缓存并不重要 - 但更重要的是它在该会话中而不是长期浏览时非常有用。因此,每次访问您的网站都可能会再次下载您的所有文件 - 除非他们是非常频繁的访问者,拥有非常大的缓存,或者不会在网上冲浪。
对于使用不支持http2的浏览器的用户来说,连接文件是否合适。
可能。但是,除了Android HTTP/2 browser support is actually very good之外,您的大部分访问者都可能已启用HTTP / 2。
这样说,在HTTP / 2下连接文件没有额外的缺点,而这些文件已经不在HTTP / 1.1下了。好吧,可以说有一些小文件可以通过HTTP / 2并行下载,而较大的文件需要作为一个请求下载,但我不会购买它会减慢任何速度。没有这方面的证据,但直觉感觉表明仍然需要发送数据,因此无论是哪种方式都存在带宽问题,或者您没有。此外,请求许多资源的开销虽然在HTTP / 2中大大减少,但仍然存在。对于大多数用户和站点而言,延迟仍然是最大的问题 - 而不是带宽。除非您的资源非常庞大,否则我怀疑您是否注意到在I / t中去下载1个大资源,或者将相同的数据分成10个并行下载到HTTP / 2中的小文件(尽管你会在HTTP / 1.1)。更不用说上面讨论的gzipping问题了。
因此,在我看来,保持连续一段时间没有害处。在某些时候,您需要调用下方是否超过给定用户资料的好处。
在这种情况下拥有更大的文件大小并使用HTTP2会不会有害?这样,运行任一协议的用户都会受益,因为可以针对http和http2优化网站。
绝对不会受伤。如上所述,(基本上)没有额外的缺点来连接HTTP / 2下的文件,而这些文件已经不在HTTP / 1.1下了。它只是在HTTP / 2下不再需要并且有缺点(可能减少缓存使用,需要构建步骤,使调试更加困难,因为部署的代码与源代码不同......等等)
使用HTTP / 2,您仍然可以看到任何网站带来的巨大好处 - 除了最简单的网站,它们可能看不到任何改进,但也没有负面影响。而且,由于旧版浏览器可以坚持使用HTTP / 1.1,因此它们没有任何缺点。何时,或者如果您决定停止实施HTTP / 1.1性能调整,如连接是一个单独的决定。
事实上,只有不使用HTTP / 2的原因是实现仍然相当容易,所以你可能不习惯在它上面运行你的生产网站。
****编辑2016年8月****
来自图片密集,带宽限制的网站的This post最近引起了对HTTP / 2社区的一些兴趣,这是HTTP / 2实际上比HTTP / 1.1慢的第一个记录示例之一。这突出了HTTP / 2技术和理解仍然是新的事实,并且需要对某些站点进行一些调整。似乎没有免费午餐这样的东西!非常值得一读,但值得注意的是,这是一个极端的例子,大多数网站受到更多影响,性能明智,延迟问题和HTTP / 1.1下的连接限制而不是带宽问题。