資料快取即儲存一些 PHP 變數到快取中,以後再從快取中取出。基於此目的,快取元件的基底類別 CCache 提供了兩個最常用的方法: set() 和 get()。
要在快取中儲存一個變數 $value
,我們選擇一個唯一ID 並呼叫 set() 儲存它:
Yii::app()->cache->set($id, $value);
// 值$value 在缓存中最多保留30秒 Yii::app()->cache->set($id, $value, 30);
$value=Yii::app()->cache->get($id); if($value===false) { // 因为在缓存中没找到 $value ,重新生成它 , // 并将它存入缓存以备以后使用: // Yii::app()->cache->set($id,$value); }
$cache=Yii::app()->cache; $cache['var1']=$value1; // 相当于: $cache->set('var1',$value1); $value2=$cache['var2']; // 相当于: $value2=$cache->get('var2');
// 此值将在30秒后失效 // 也可能因依赖的文件发生了变化而更快失效 Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));某些快取策略(例如快取空間已滿,舊的資料被刪除)而被清除。 要改變這個行為,我們可以在呼叫 set() 的同時提供一個過期參數,這樣在設定的時間段之後,快取資料將會被清除:
rrreeerrreee
rrreee
後當我們需要稍後需要存取此變數時(在同一個或不同的Web 請求中),就可以透過ID 呼叫 get() 從快取中將其取回。 如果傳回的是 false,表示此值在快取中不可用,我們應該重新產生它。
為要存入快取的變數選擇 ID 時,請確保此 ID 對應用中所有其他存入快取的變數是唯一的。 而在不同的應用程式之間,這個 ID 不需要是唯一的。快取組件具有足夠的智慧區分不同應用中的 ID。
提示:
由於 CCache 實現了
,快取元件也可以像陣列一樣使用。以下是幾個例子:
除了過期設置,快取資料也可能會因為依賴條件改變而失效。例如,如果我們快取了某些檔案的內容,而這些檔案發生了改變,我們就應該讓快取的資料失效, 並從檔案中讀取最新內容而不是從快取中讀取。
rrreee
$value
,且依賴關係將被檢查,如果發生改變,我們將會得到一個false 值,表示資料需要重新改變生成。
CFileCacheDependency: 如果檔案的最後修改時間改變,則依賴變更。