2010-07-22 112 views
1

我在我的控制下:蛋糕PHP緩存幫手,CACHEACTION

var $cacheAction = array(
      'view/' => 432000, 
      'pricelist/'=>'100000', 
      'latest/' => '100000'); 

這就是緩存的意見5天。我還在core.php中啓用了緩存,並在我的控制器中包含了緩存助手。

緩存文件在tmp/cache/views /中正確創建,但它們似乎不會持續5天。如果我做了一個文件列表,所有文件都在過去的3-4分鐘內創建完成。

我在做什麼錯?我是否需要另一種緩存動作語法?

謝謝

回答

3

您的操作使用的模型是否需要更改?從Cookbook

重要的是要記住,如果在緩存視圖中使用的模型被修改,Cake將清除緩存視圖。例如,如果緩存視圖使用來自Post模型的數據,並且對Post執行了INSERT,UPDATE或DELETE查詢,則會清除該視圖的緩存,並在下一個請求中生成新內容。

+0

否此頁面的模型未更新。但! 該頁面顯示登錄用戶可以添加到他/她的購物籃中的圖片。另一種模型的BasketImages得到更新。 除了這個視圖還包含一個讀取SESSION變量的div,並說明用戶在他的籃子中有多少圖像。 這是原因嗎? – gong 2010-07-31 18:51:05

+0

所以我測試過,無論何時將圖像添加到籃子中,緩存都會被清除。 有沒有辦法來防止這種情況? – gong 2010-08-03 11:06:52

+0

您可能可以在動態部分上使用ajax,以便籃子來自與您正在嘗試緩存的視圖不同的視圖。 – 2010-08-03 15:06:47

0

我的車型有:

事件的hasMany圖片

屬於關聯事件 的hasMany BasketImages

BasketImages 屬於關聯圖像0​​BEL ongsTo購物籃

所以我緩存了頁面events/view/id。這種觀點認爲,我有:

<?php if (($c=count($basketImages))>0) echo $c; ?> 

,然後還有一些照片和一個按鈕,這使得一個AJAX調用,比如:/籃/添加/圖像標識

在籃/添加,如果用戶沒有按」沒有一個籃子可以創建一個籃子,它還會創建一個帶有當前圖像ID的BasketImage記錄。

所以我的問題是這樣做我的網頁秋天在類別:

要記住的是,如果緩存的視圖中使用的模型被修改的蛋糕將清除緩存的觀點是很重要的。 (食譜)

添加一個籃子和basketImage是否使事件/視圖緩存過期?我可以使用:

<cake:nocache> <?php if (($c=count($basketImages))>0) echo $c;?><cake:nocache> 
+0

這應該已經添加到您的問題,而不是發佈爲答案。 – 2011-02-24 21:30:12