如何为字符串/文件名创建组



好吧,我是stackoverflow的新手。

开发一个电子商务网站,我在主页上有多达50个独特的图像需要加载。我使用亚马逊CDN为我的图像和所有这些文件都在一个桶与唯一的域。

我想有多个域映射到这个桶。但是,对于每个映像,我应该能够在运行时找到它上次服务的域,以便对缓存进行最佳优化。我的想法是有一个函数func(filename),它可以每次为相同的文件名返回0-9之间的值。这可以用于域名。

我不希望函数像散列那样沉重,在这种情况下,我希望发生碰撞而不是避免它。

一个简单的方法是使用间隔(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);(尽管性能提升并不显着…)。

最新更新