FragmentCache это приемник COutputCache из первой версии. Разработчики предполагали, что генерируемый для кеша ключ может быть очень сложный. Поэтому для получения конеретного кеша, ты должен знать его точно.
Добавить еще один префикс с полпинка не получится и для большинства будет оверхедом, вряд ли это добавлят в фреймворк. Вижу это как-то так:
Код: Выделить всё
$this->beginCache($key, ['duration' => 0, 'dependency' => $dependency, 'variations' => [new CacheKeyPrefix($clubId . 'TeamInfo')]])
Код: Выделить всё
class Redis extends \yii\cache\Redis
{
/**
* @override
*/
public function buildKey($key)
{
if (is_string($key) || !is_array($key)) {
return parent::buildKey($key);
} else {
$keyPrefix = $this->keyPrefix;
$newKey = [];
foreach ($key as $k => $v) {
if ($v instanceof CacheKeyPrefix) {
$keyPrefix .= (string) $v;
} else {
$newKey[$k] => $v;
}
}
$newKey = md5(json_encode($newKey));
return $this->keyPrefix . $newKey;
}
}
}
Код: Выделить всё
class CacheKeyPrefix
{
private $prefix;
public function __construct($prefix)
{
$this->prefix = $prefix;
}
public function __toString()
{
return $this->prefix;
}
}