文章出處

---恢復內容開始---

yii緩存技術

閑來無事,研究下 yii緩存。

緩存是用于提升網站性能的一種即簡單又有效的途徑。通過存儲相對靜態的數據至緩存以備所需,我們可以省去生成這些數據的時間。

在 Yii 中使用緩存主要包括配置和訪問緩存組件。如下的應用配置指定了一個使用兩臺緩存服務器的 memcache 緩存組件: 

array(
'components'=>array(
         'cache'=>array(
               'class'=>'system.caching.CMemCache',
               'servers'=>array(
               array(
                     'host'=>'server1',
                     'port'=>11211,
              'weight'=>60
            ),
           array(
            'host'=>'server2',
            ' port'=>11211,
            'weight'=>40
          ),                       ),     ),   ),

);

程序運行的時候可以通過 Yii::app()->cache 來訪問緩存組件.

緩存可以在不同的級別使用。在最低級別,我們使用緩存來存儲單個數據,比如一個變量,我們把它叫做 數據緩存。往上一級,我們緩存一個由視圖腳本生成的頁面片斷。在最高級別,我們存儲整個頁面以便需要的時候直接從緩存讀取。
接下來我們將闡述如何在這些級別上使用緩存。

注意: 按定義來講,緩存是一個不穩定的存儲媒介,它不保證緩存一定存在——不管該緩存是否過期。所以,不要使用緩存進行持久存儲(比如,不要使用緩存來存儲 SESSION 數據)。

數據緩存
數據緩存也就是在緩存中存儲一些 PHP 變量,過一會再取出來。緩存基礎類 CCache 提供了兩個最常用的方法:set() 和get()。
要在緩存中存儲變量 $value,我們選擇一個唯一 ID 并調用 set() 來存儲它:

Yii::app()->cache->set($id, $value);

被緩存的數據會一直保留在緩存中,直到因一些緩存策略而被刪除(比如緩存空間滿了,刪除最舊的數據)。要改變這一行為,我們還可以在調用 set() 時加一個過期參數,這樣數據過一段時間就會自動從緩存中清除。 // 在緩存中保留該值最多 30 秒

Yii::app()->cache->set($id, $value, 30);

當我們稍后需要訪問該變量時(不管是不是同一 Web 請求),我們調用 get() (傳入 ID)來從緩存中獲取它。如果返回值為 false,說明該緩存不可用,需要我們重新生成它。 

$value=Yii::app()->cache->get($id); if($value===false) { 

      // 因為在緩存中沒找到,重新生成 $value
      // 再緩存一下以備下次使用
      // Yii::app()->cache->set($id,$value);
}

為一個要緩存的變量選擇 ID 時,確保該 ID 在應用中是唯一的。不必保證 ID 在跨應用的情況下保證唯一,因為緩存組件有足夠的智能來區分不同應用的緩存 ID。

要從緩存中刪除一個緩存值,調用 delete();

要清空所有緩存,調用 flush()。調用 flush() 時要非常小心,因為它會把其它應用的緩存也清空

提示: 因為 CCache 實現了 ArrayAccess 接口,可以像數組一樣使用緩存組件。例如:

 $cache=Yii::app()->cache;
 $cache['var1']=$value1; // 相當于: $cache->set('var1',$value1);
 $value2=$cache['var2']; // 相當于: $value2=$cache->get('var2');

 

 

---恢復內容結束---


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()