JS 和 CSS 文件的捆绑在 HTTP/2 中不需要 https://stackoverflow.com/questions/30861591/why-bundle-optimizations-are-no-longer-a-concern-in-http-2,但是图像精灵呢?
看着the demo https://http2.akamai.com/demo看起来它的工作速度已经比 HTTP/1.1 快得多,但是将图像捆绑到精灵中不会使它更快吗?我的意思是,当所有数据都在一个文件中时,PNG 的优化算法不会工作得更好吗?
这取决于您的图像大小和格式。如果图像足够大,则使用精灵不会获得太多收益,但对于小图像,即使使用 HTTP/2,也会获得显着的收益。 HTTP/2 的优点在于标头开销大大减少,往返次数甚至更少(假设服务器实现 PUSH)。问题是,您的文件应该多小才能考虑捆绑它们?
对于位图,你说得很好,因为 PNG 的优化算法有利于精灵,特别是当它们的尺寸足够小时。例如,虽然图像在大小为 17.4 kb,对其进行切片会生成 132 个单独的图像,总计 135 kb。当您添加少量但仍然存在的额外传输开销时,它接近十倍。是的,当服务器和客户端之间的带宽有限时,大小仍然很重要。
其实这也达到了文本资源,如 javascript、css 和SVG 文件。如果它们足够小并且不经常更改,您仍然可以考虑将它们捆绑在一起。例如,JavaScript 中ng文件夹 https://github.com/angular/angular.js/tree/master/src/ng如果作为单独、缩小和压缩的 js 进行传输,Angular 的源代码需要 69.6 kb。如果在 gzip 压缩之前将它们连接起来,则只有 31.9 kb。然而,这里的系数略高于 2,如果 HTTP/2 节省了连接时间和往返时间,那么它可能就不那么重要了。这进一步平衡了单独缓存资源的可能性。
最后一点,如果您的小图像/图标是 SVG 矢量(它们应该!),那么它们将被视为文本资源。此外,SVG 矢量往往会更大一些,例如,Firefox 的 SVG 图标 http://svgicons.o7a.net/official/firefox.svggzip 压缩后大小为 15.7 kb。在这种规模下,如果 HTTP/2 的功能有效的话,那么决定链接到它、内联还是捆绑是显而易见的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)