【发布时间】:2014-01-04 11:54:25
【问题描述】:
我的网站提供许多图像,我想通过子域请求来并行化图像请求。
例如http://mydomain.com/image1.png 变为 http://img[0-9].mydomain.com/image1.png
我正在寻找的是一种允许我转换的哈希算法
"some-random-image-name.png" 到单个数字范围 0-9
以便我可以通过以下方式加载图像:
http://img0.mydomain.com/foo.png
http://img1.mydomain.com/foo.png
等等
我不能使用随机数,因为那样效率不高。如果图像从 img1 加载,我希望对该图像的下一个请求也转到 img1。
这需要很快,因为每次页面加载都会调用很多次。
感谢您的想法。
添加节点:
为什么要这样做?
浏览器只会从单个服务器请求有限数量的请求。这篇文章在这里讨论了这一点:
Max parallel http connections in a browser?
为了使包含许多静态资产(例如图像)的页面加载速度更快,您可以添加子域。即使它们仍然来自同一台服务器。
【问题讨论】:
-
您是否将这些图像保存在任何地方的数据库中?如果是这样,只需使用图像 ID。
-
我想我根本不明白这个需求。如果您使用的是合理的 CDN 提供商,您应该没有这样的需求。如果出于某种原因,您仍然需要使用不同的服务器集来提供内容,您也许可以使用 DNS 负载平衡器来满足您的需求。
-
使用数据库中图像 ID 的最后一位。这将为您提供一个自动数字平衡的 0-9 范围。不能保证图像 1001 不会太受欢迎以至于它会杀死 img1 服务器。
-
如果您有
arandomimage.png和anotherimage.png在您假设的一位数字哈希中都评估为5,那么您将如何区分它们? -
为那些询问为什么要这样做的人添加了一个注释。