首頁  >  文章  >  後端開發  >  Yii框架官方指南增補系列29-快取:資料緩存

Yii框架官方指南增補系列29-快取:資料緩存

黄舟
黄舟原創
2017-02-15 09:15:201209瀏覽



資料快取即儲存一些 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() 的同時提供一個過期參數,這樣在設定的時間段之後,快取資料將會被清除:

rrreee


rrreee

後當我們需要稍後需要存取此變數時(在同一個或不同的Web 請求中),就可以透過ID 呼叫 get() 從快取中將其取回。 如果傳回的是 false,表示此值在快取中不可用,我們應該重新產生它。

rrreee

為要存入快取的變數選擇 ID 時,請確保此 ID 對應用中所有其他存入快取的變數是唯一的。 而在不同的應用程式之間,這個 ID 不需要是唯一的。快取組件具有足夠的智慧區分不同應用中的 ID。

一些快取記憶體,例如 MemCache, APC, 支援以批次模式取得多個快取值。這可以減少獲取快取資料時帶來的開銷。 從版本 1.0.8 起,Yii 提供了一個新的名為 mget() 的方法。它可以利用此功能。如果底層快取記憶體不支援此功能,mget() 仍可模擬實作它。

要從快取中清除一個快取值,呼叫 delete(); 要清楚快取中的所有數據,呼叫 flush()。 當呼叫 flush() 時一定要小心,因為它會同時清除其他應用程式中的快取。

提示: 由於 CCache 實現了 

ArrayAccess

,快取元件也可以像陣列一樣使用。以下是幾個例子:

  • rrreee
  • 快取依賴
  • 除了過期設置,快取資料也可能會因為依賴條件改變而失效。例如,如果我們快取了某些檔案的內容,而這些檔案發生了改變,我們就應該讓快取的資料失效, 並從檔案中讀取最新內容而不是從快取中讀取。

  • 我們將一個相依性表現為一個 CCacheDependency 或其子類別的實例。 當呼叫 set() 時,我們連同要快取的資料將其一同傳入。
  • rrreee

  • 現在如果我們透過呼叫get() 從快取中取得 

    $value

     ,且依賴關係將被檢查,如果發生改變,我們將會得到一個false 值,表示資料需要重新改變生成。
如下是可用的快取相依的簡要說明:


CFileCacheDependency: 如果檔案的最後修改時間改變,則依賴變更。

🎜🎜🎜CDirectoryCacheDependency: 如果目錄和其子目錄中的檔案改變,則依賴改變。 🎜🎜🎜🎜CDbCacheDependency: 如果指定 SQL 語句的查詢結果改變,則依賴改變。 🎜🎜🎜🎜CGlobalStateCacheDependency: 如果指定的全域狀態改變,則依賴改變。全域狀態是應用程式中的一個跨請求,跨會話的變數。它是透過 CApplication::setGlobalState() 定義的。 🎜🎜🎜🎜CChainedCacheDependency: 如果鏈中的任何依賴發生改變,則此依賴改變。 🎜🎜🎜🎜CExpressionDependency: 如果指定的 PHP 表達式的結果改變,則依賴改變。此類從版本 1.0.4 起可用。 🎜🎜🎜🎜以上就是Yii框架官方指南增補系列29-快取:資料快取的內容,更多相關內容請關注PHP中文網(www.php.cn)! 🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn