Caching 通过自定义路由进行控制器缓存

Caching 通过自定义路由进行控制器缓存,caching,cakephp,cakephp-1.3,Caching,Cakephp,Cakephp 1.3,嘿,那里, 我的目标是使用自定义路由获取页面的生成版本或缓存版本 为此,我创建了第二个针对同一控制器的自定义路由 Router::connect('/get/*', array('controller' => 'mycontroller', 'action' => 'myaction')); Router::connect('/getnocache/*', array('controller' => 'mycontroller', 'action' => 'myactio

嘿,那里, 我的目标是使用自定义路由获取页面的生成版本或缓存版本

为此,我创建了第二个针对同一控制器的自定义路由

Router::connect('/get/*', array('controller' => 'mycontroller', 'action' => 'myaction'));
Router::connect('/getnocache/*', array('controller' => 'mycontroller', 'action' => 'myaction'));
这样做的问题是,$cacheAction忽略了这一点(不缓存任何内容):

使用$cacheAction时,通常会缓存所有请求:

var $cacheAction = '1 hour';

是我遗漏了什么还是这根本不可能?

为同一控制器/操作/参数信息创建两个不同的链接是一种不好的做法。您在请求页面时不会遇到问题,但是如果使用CakePHP创建链接,它将始终使用第一个匹配项,因此您总是会得到一个/get/*url

然而,有一个解决办法。您只需在第二个参数中指定更多项:

Router::connect('/get/*', array(
    'controller' => 'mycontroller', 
    'action' => 'myaction', 'useCache' => true
));

Router::connect('/getnocache/*', array(
    'controller' => 'mycontroller', 
    'action' => 'myaction', 'useCache' => false
));

根据额外的参数,您可以轻松决定是否缓存请求。我不确定如何在控制器中访问该参数(我上次使用CakePHP已经有一段时间了),但我知道这是可能的。它可能类似于控制器中的
$this->params['useCache']

要完成回答,可通过$this->cacheAction=[MIXED]访问参数;
Router::connect('/get/*', array('controller' => 'mycontroller', 'action' => 'myaction'));
Router::connect('/getnocache/*', array('controller' => 'mycontroller', 'action' => 'myaction'));