我在Zend_Cache
中保存缓存对象的标识符有一些问题。必须对Zend_Cache
标识符进行真正的净化(没有特殊字符,没有空格等)。我的一些内部标识符中有空格,所以保存缓存对象对我来说是个问题。
我正在考虑在保存之前使用md5()转换zend_cache标识符,例如:
$cacheId = md5(self::CACHE_PREFIX . $propertyId);
if (($address = $cache->load($cacheId)) === false) {
.....
$cache->save($cacheId, $address);
}
(例如,$propertyId
可能是一个带空格的字符串)
我的问题是我创建的md5字符串有多独特?我的两个缓存对象有可能具有相同的标识符吗?有什么建议吗?
我的问题是我创建的md5字符串有多独特?
它们非常独特。但是,您拥有的id越多,就越有可能发生冲突(您需要非常大量的条目!)。还可以将生成的哈希放到不同的"命名空间"中,比如
$cacheId = 'addresses_' . md5(self::CACHE_PREFIX . $propertyId);
除了散列,你也可以考虑使用id本身。你说过,它们包含一些特殊字符。您可以对它们进行消毒,例如使用base64_encode()