好的,我是 stackoverflow 的新手。
开发一个电子商务网站,我在主页上有多达 50 张不同的图片需要加载。我为我的图像使用 Amazon CDN,所有这些文件都在一个具有唯一域的存储桶中。
我想将多个域映射到此存储桶。然而,对于每张图片,我应该能够在运行时找到它上次服务于哪个域,以便缓存得到最优化。我的想法是有一个函数 func(filename) ,它可以每次为相同的文件名返回 0-9 之间的值。这可以用于域名。
我不希望 func 像散列一样非常重,在这种情况下,我希望发生冲突而不是避免冲突。
一个简单的方法是使用 intval(filename) 然后使用最低有效位。但是,我不确定这是否是一个好的解决方案,也不确定价差是否平衡。
有什么建议吗?
最佳答案
像这样简单的事情怎么样:
function customHash($str) {
$hash = 0;
for ($i = 0; $i < strlen($str); $i++) {
$hash += ord($str[$i]);
}
return $hash % 10;
}
您可以通过多种方式对其进行优化,例如使用 iconv_strlen() 正确处理 utf-8 字符串而不是整个长度,$len = max(6, $strlen);
可以是使用(虽然性能提升并不显着...)。
关于php - 如何为字符串/文件名创建一个组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556162/