在cakephp中动态路由的全视图缓存

时间:2009-10-03 17:31:14

标签: cakephp caching

我在cakephp中遇到完整view caching的问题。

我想要缓存的网址是/posts/badge/23/size:180x150我已经能够通过向控制器添加$cacheAction = "1 hour";来成功缓存视图。

由于我不想缓存控制器中的所有方法(只是特定方法),我尝试使用数组语法来匹配网址/posts/badge/23/size:180x150 其中23是帖子ID,大小是命名参数(有2个 尺寸的变化)。

所以我的问题是什么是正确的(如果有的话)匹配 cacheAction缓存所有帖子/徽章/ *以下是我的一些例子 尝试过:

var $cacheAction = array(
        'badge/*' => '+1 hour',
        'posts/badge/23/size:180x150' => '1 hour',
        'badge/23/size:180x150' => '1 hour',
        'posts/badge/:id/:size' => '1 hour',
        'badge/:id/:size' => '1 hour',
);

这些似乎都不匹配(或者至少不会缓存一些 原因)。我确实需要缓存帖子/徽章/ / size:并捕获每个帖子 参数传递。

再次,如果我设置$ cacheAction =“1小时”;那么缓存文件是 created(文件tmp / cache / views / posts_badge_23_size_180x150.php是 创建)

有没有人能够为动态网址创建缓存?

2 个答案:

答案 0 :(得分:2)

CakePHP的CacheHelper目前不具备路由功能。 CacheHelper :: cache()负责解析和检查$ cacheAction设置,它不使用任何路由器功能,它只是进行一些字符串检查。

您可以使用自己的CacheHelper,只需适当修改cache()方法,并将文件cache.php放在app / views / helpers中。

此票与您的问题类似,其中发布的解决方案可能对您有所帮助:trac.cakephp.org/ticket/6192

答案 1 :(得分:0)

在此页面上:Caching in the Controller它说:

  

如果您有任何路径,请记住在$ cacheAction中使用您的路线。

因此,尝试创建一些与您的URL结构匹配的路由,并将它们用于cacheAction键。如果有效,请报告。