快取

快取是提升 Web 應用程式效能最便宜且有效的方法。通過將靜態的資料儲存到快取並在收到請求時取回快取,節省了產生這些資料所需的時間。

在 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 存取。

Yii 提供了不同的快取元件,可以將快取資料儲存到不同的媒介中。例如, CMemCache 元件封裝了 PHP 的 memcache 擴充並使用記憶體作為快取儲存媒介。 CApcCache 元件封裝了 PHP APC 擴充; 而 CDbCache 元件會將快取的資料存入資料庫。下面是可用的快取元件的列表:

提示: 由於所有的這些快取元件均繼承自同樣的基礎類別 CCache,因此無需改變使用快取的那些程式碼就可以切換到使用另一種快取方式。

快取可以用於不同的級別。最低級別中,我們使用快取儲存單個資料片段,例如變數,我們將此稱為 資料快取(data caching)。下一個級別中,我們在快取中儲存一個由視圖腳本的一部分產生的頁面片段。 而在最高級別中,我們將整個頁面儲存在快取中並在需要時取回。

在接下來的幾個小節中,我們會詳細講解如何在這些級別中使用快取。

注意: 按照定義,快取是一個不穩定的儲存媒介。即使沒有超時,它也並不確保快取資料一定存在。 因此,不要將快取作為持久儲存裝置使用。(例如,不要使用快取儲存 Session 資料)。

$Id$