解决此问题的唯一解决方法是以下步骤:
1) 创建一个扩展 CacheHelper 的自己的 MyCacheHelper 并将其保存到app/View/Helper/CacheHelper.php
. 覆盖该方法_writeFile()
并使用您的前缀扩展 $path 字符串的行:
App::uses('Helper', 'Cache');
class MyCacheHelper extends CacheHelper
{
public function _writeFile($content, $timestamp, $useCallbacks = false)
{
// ...
$cache = $prefix.strtolower(Inflector::slug($path));
// ...
}
}
2)创建一个自己的 MyDispatcher 扩展 Dispatcher 并将其保存到app/Lib/Routing/MyDispatcher.php
. 覆盖该方法cached()
并使用您的前缀扩展 $path 字符串的行:
App::uses('Dispatcher', 'Routing');
class MyDispatcher extends Dispatcher
{
public function cached($path)
{
// ...
$path = $prefix.strtolower(Inflector::slug($path));
// ...
}
}
3) 更改文件app/webroot/index.php
以使用您的新调度程序:
App::uses('MyDispatcher', 'Routing');
$Dispatcher = new MyDispatcher();
4)更新$helper
控制器中的参数以使用MyCache
而不是Cache
.
而已。有点复杂,但它按预期工作!现在您可以根据需要调整 $prefix 并为不同的域创建唯一的缓存文件。