这里有很多事情需要考虑。在大多数情况下,我只会选择一个无 cookie 域/子域来托管您的图像,例如 static.mywebsite.com。理想情况下,静态文件应该由 CDN 托管,但这是另一回事。
首先,IE7 只允许每个主机有两个并发连接。但是今天的大多数浏览器允许的远不止这些。 IE8允许6个并发连接,Chrome允许6个,Firefox允许8个。
因此,例如,如果您的网页只有 6 张图片,那么将您的图片分散到多个子域就毫无意义。
假设您在一个页面上有 24 张图片。好吧,生活中很少有东西是免费的,有这样的事情,比如并行化的死亡。如果您将图像托管在 4 个不同的子域中,那么这意味着理论上每个图像都可以并行下载。但是,这也意味着涉及 3 个额外的 DNS 查找。 DNS 查找可能需要 100 毫秒、150 毫秒,有时甚至更长。这种增加的延迟很容易抵消并行下载的任何好处。您可以通过使用http://www.webpagetest.org/ 测试网站来查看实际示例
当然,最好的解决方案是尽可能使用 CSS sprite 来减少请求的数量。我在this article 和this one 中讨论了这个以及每个请求的固有开销。
更新
Steve Souders 有一篇关于分片域主题的有趣文章...
美国十大网站中的大多数都进行域分片。 YouTube 使用
i1.ytimg.com、i2.ytimg.com、i3.ytimg.com 和 i4.ytimg.com。居住
搜索使用 ts1.images.live.com、ts2.images.live.com、
ts3.images.live.com 和 ts4.images.live.com。这两个网站都是
跨四个域分片。最佳数字是多少? 雅虎!
发布了一项研究,建议至少跨两个分片,但没有
四个以上,域。以上四个,性能实际上会下降。
http://www.stevesouders.com/blog/2009/05/12/sharding-dominant-domains/
但请注意,这是 2009 年写的。2011 年,他发表了评论……
由于较新的浏览器会为每个域打开更多连接,因此可能
最好将数字向下修正。我认为2是一个很好的妥协,
但这只是一种预感。如果一些生产属性运行,那就太好了
确定最佳数量的测试。
您还应该记住,雅虎和亚马逊等大型网站甚至需要进行域分片的主要原因是他们的网站是如此动态。图像附加到动态显示的产品或故事上。因此,对他们来说,尽可能积极地使用 CSS 精灵是不可行的。
然而,像 StackOverflow 这样的网站对这类图像很轻,而且它们已经减少了请求的数量,以至于它们不需要进行分片。实现这一目标的一大步是他们使用这个 sprites.png 图像......
http://cdn.sstatic.net/Sites/stackoverflow/img/sprites.png?v=5
更新 #2
Steve Souders 发布了another update on domain sharding。他重复了我已经提到的大部分内容。但最突出的是 SPDY 以及它将如何影响您的决定。
也许反对域分片的最有力论据是
在 SPDY(以及 HTTP 2.0)的世界中是不必要的。实际上,
域分片可能会损害 SPDY 下的性能。 SPDY 支持
并发请求(提前发送所有请求标头)以及
请求优先级。跨多个域的分片减少
这些好处。 Chrome、Firefox、Opera 和 IE 支持 SPDY
11. 如果您的流量主要由这些浏览器主导,您可能希望跳过域分片。
更新 #3(2018 年 2 月)
正如 Dean 在下面的 cmets 中提到的那样,由于现代浏览器支持 HTTP/2,CSS sprite 现在并没有真正让你买账。但是您必须获得 SSL 证书,设置您的站点以使用 HTTPS,并确保您的 Web 服务器配置为使用 HTTP/2。要么,要么使用已经为您设置了所有这些的 CDN。一旦你完成了所有这些,你就可以跳过 CSS sprites 和域分片。