2009-10-03 63 views
1

我在cakephp中遇到了一些與全view caching有關的問題。在cakephp中動態路由的全視圖緩存

我想要緩存的網址是/posts/badge/23/size:180x150我已經能夠通過將$cacheAction = "1 hour";添加到控制器來成功緩存視圖。我試圖使用數組語法來匹配url /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小時」;那麼緩存文件被創建 (文件TMP /緩存/視圖/ posts_badge_23_size_180x150.php是 創建)

任何人都已經能夠創建一個動態的URL緩存?

+0

這票是類同的問題,解決張貼有可能幫助你嗎?我看到你鏈接到1.1版本的一篇文章,但最新的版本是1.2.5穩定版本,與1.1版本有很大不同。 – 2009-10-04 19:35:26

+0

我正在使用最新的1.2.5鏈接只是緩存助手最完整的文檔。它似乎沒有被複制到新書中。 – 2009-10-05 14:20:23

回答

2

CakePHP的CacheHelper目前不支持路由。 CacheHelper :: cache()負責解析和檢查$ cacheAction設置,不使用任何路由器功能,只是進行一些字符串檢查。

您可以使用自己的CacheHelper,只需適當地修改cache()方法並將文件cache.php放置在app/views/helpers中即可。您正在使用什麼版本的CakePHP的trac.cakephp.org/ticket/6192

0

在此頁面:Caching in the Controller它說:

記得要用你的路由在$ CACHEACTION如果您有任何。

因此,嘗試建立符合您的URL結構,並使用它們CACHEACTION鍵,一些路線。請報告,如果它的工作。

+0

這裏沒有特殊的路由。它遵循默認路線。我非常認可他們在這裏談論的是如果你已經改變了默認路由(比如重命名的視圖來顯示),那麼你會希望cacheAction匹配你的route.php中的路由 – 2009-10-03 20:35:36