我在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是 创建)
有没有人能够为动态网址创建缓存?
答案 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键。如果有效,请报告。