加载1个1MB大图像(spritesheet)与加载100个10KB图像

时间:2016-12-08 20:49:54

标签: apache server webserver hosting host

假设我有100张图片,每张图片大小为10KB。将所有这些放入单个spritesheet有什么好处?据我所知,HTTP请求较少,因此服务器上的负载较少,但我对这些细节感到好奇。使用现代流水线技术,仍然值得获得性能提升吗?性能提升有多重要?它是否会导致客户端的加载时间更短,服务器上的负载更少,或者加载时间相同,但服务器负载更少?

是否有任何人可以指出的测试用例可以回答这些问题?

基本上,我要问的是 - 值得吗?

1 个答案:

答案 0 :(得分:1)

在HTTP / 1.1下(大多数网站仍然是 使用)与一个大的资源相比,下载许多小资源的开销很大。这就是为什么spriting作为优化技术变得流行的原因。 HTTP / 2主要解决这个问题,因此对spriting的要求较少(实际上它现在被认为是反模式)。不确定你的意思"现代流水线"但这主要是指HTTP / 2为pipelining in HTTP/1.1 isn't as fully featured or used much

与HTTP / 1.1相比,性能有多糟糕?实际上非常糟糕 - 它可以使加载时间慢10倍on an example site I created。它并没有真正影响服务器或客户端负载过多 - 需要以相同方式发送相同数量的数据 - 但会大大影响加载时间。

说图像的spriting存在缺点(以及类似的文本文件的连接)。你必须下载整个精灵,即使只使用一个图像,更新它会使缓存中的旧版本无效,它需要一个构建步骤......等等。

最终,最好的测试是尝试它,因为它会因站点而异。然而,一旦HTTP / 2变得无处不在,这将变得不那么常见。

有关此答案的更多讨论:Optimizing File Cacheing and HTTP2