繁体   English   中英

优化文件缓存和HTTP2

[英]Optimizing File Cacheing and HTTP2

我们的网站正在考虑切换到http2。

我的理解是http2渲染文件连接等优化技术已经过时 ,因为使用http2的服务器只发送一个请求。

相反,我看到的建议是, 最好保持较小的文件大小,以便它们更有可能被浏览器缓存。

它可能取决于网站的大小,但如果网站的文件使用http2并希望专注于缓存,它应该有多小?

在我们的例子中,我们的许多单独的js和css文件都在1kb到180kb的范围内。 Jquery和bootstrap可能更多。 累积起来,我们网站上新下载的页面通常不到900 kb。

所以我有两个问题:

这些文件大小是否足够小,可以被浏览器缓存?

如果它们小到可以缓存,那么对于使用不支持http2的浏览器的用户来说,连接文件是否合适。

在这种情况下拥有更大的文件大小并使用HTTP2会不会有害? 这样,运行任一协议的用户都会受益,因为站点可以针对http和http2进行优化。

让我们澄清一些事情:

我的理解是http2渲染文件连接等优化技术已经过时,因为使用http2的服务器只发送一个请求。

HTTP / 2渲染优化技术(如文件串联) 有点过时,因为HTTP / 2允许许多文件在同一连接上并行下载。 以前,在HTTP / 1.1中,浏览器可以请求文件,然后必须等到该文件完全下载才能请求下一个文件。 这导致了诸如文件串联(以减少所需文件的数量)和多个连接(允许并行下载的黑客)之类的变通方法。

然而,有一个反驳论点,即仍然存在多个文件的开销,包括请求它们,缓存它们,从缓存中读取它们等等。它在HTTP / 2中大大减少但没有完全消失。 另外,gzipping文本文件在较大的文件上工作得更好,而不是分别对大量较小的文件进行gzipping。 就个人而言,我认为其缺点超过了这些问题,我认为一旦HTTP / 2无处不在,连接就会消失。

相反,我看到的建议是,最好保持较小的文件大小,以便它们更有可能被浏览器缓存。

它可能取决于网站的大小,但如果网站的文件使用http2并希望专注于缓存,它应该有多小?

文件大小与它是否会被缓存无关(除非我们讨论的是比缓存本身更大的真正大量文件)。 将文件拆分为较小块的原因更适合缓存,因此如果进行任何更改,则仍可以从缓存中使用任何未触摸的文件。 如果您在一个大的.js文件中拥有所有的javascript(例如),并且您更改了一行代码,则需要再次下载整个文件 - 即使它已经在缓存中。

类似地,如果你有一个图像精灵图,那么这对于减少HTTP / 1.1中的单独图像下载非常有用,但是如果你需要编辑它以添加一个额外的图像,则需要再次下载整个精灵文件。 更不用说整个东西都被下载了 - 即使对于只使用其中一个图像精灵的页面也是如此。

然而,说了这么多,有一种思路认为长期缓存的好处已经过时了。 请参阅此文章 ,特别是有关HTTP缓存的部分,该部分显示大多数人的浏览器缓存比您想象的要小,因此您的资源不太可能被缓存很长时间。 这并不是说缓存并不重要 - 但更重要的是它在该会话中而不是长期浏览时非常有用。 因此,每次访问您的网站都可能会再次下载您的所有文件 - 除非他们是非常频繁的访问者,拥有非常大的缓存,或者不在网上冲浪。

对于使用不支持http2的浏览器的用户来说,连接文件是否合适。

有可能。 但是,除了在Android上, HTTP / 2浏览器支持实际上非常好,因此大多数访问者可能已启用HTTP / 2。

如果说,在HTTP / 2下连接文件没有额外的缺点,而这些文件在HTTP / 1.1下已经不存在了。 好吧可以说有一些小文件可以通过HTTP / 2并行下载,而一个较大的文件需要作为一个请求下载,但我不会购买它会使任何速度慢下来。 没有这方面的证据,但直觉感觉表明仍然需要发送数据,因此无论是哪种方式都存在带宽问题,或者您没有。 此外,请求许多资源的开销虽然在HTTP / 2中大大减少,但仍然存在。 对于大多数用户和站点而言,延迟仍然是最大的问题 - 而不是带宽。 除非您的资源非常庞大,否则我怀疑您是否注意到我在下载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月编辑****

这个帖子来自图像重,带宽限制,网站最近引起了对HTTP / 2社区的一些兴趣,作为HTTP / 2实际上比HTTP / 1.1慢的第一个文档示例之一。 这突出了HTTP / 2技术和理解仍然是新的事实,并且需要对某些站点进行一些调整。 似乎没有免费午餐这样的东西! 非常值得一读,但值得注意的是,这是一个极端的例子,大多数网站受到更多影响,性能明智,延迟问题和HTTP / 1.1下的连接限制而不是带宽问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM