CodeIgniter 使用手冊版本 2.2.0


Caching Driver

CI 以包裝一些受歡迎並且快速又動態的快取為特色,幾乎所有 file-based 的快取都會需要特定的伺服器,並且當出現沒有遇過的伺服器需求時,會發出錯誤例外

資料表格

允許使用的 Driver

使用範例

底下的範例是使用 APC 快取,假如它無法使用則會退回 file-based 快取

$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));

if ( ! $foo = $this->cache->get('foo'))
{
     echo 'Saving to the cache!<br />';
     $foo = 'foobarbaz!';

     // Save into the cache for 5 minutes
     $this->cache->save('foo', $foo, 300);
}

echo $foo;

函數參考

is_supported(driver['string'])

當透過 $this->cache->get() 使用 driver 時,此函數會被自動呼叫,假如是獨立使用 driver 時,請務必呼叫此函數來確定 driver 在此環境是否支援

if ($this->cache->apc->is_supported())
{
     if ($data = $this->cache->apc->get('my_cache'))
     {
          // do things.
     }
}

get(id['string'])

此函數將會從快取中取得一個項目,此項目不存在則會回傳 FALSE

$foo = $this->cache->get('my_cached_item');

save(id['string'], data['mixed'], ttl['int'])

此函數將會儲存一個項目到快取中,儲存失敗則會回傳 FALSE,第三個參數(存活時間),預設為60秒

$this->cache->save('cache_item_id', 'data_to_cache');

delete(id['string'])

此函數將會刪除一個指定的項目,刪除失敗則會回傳 FALSE

$this->cache->delete('cache_item_id');

clean()

此函數將會清除快取,清除失敗則會回傳 FALSE

$this->cache->clean();

cache_info()

此函數將會回傳所有的快取資訊

var_dump($this->cache->cache_info());

get_metadata(id['string'])

此函數將會從快取中回傳指定項目的詳細資訊

var_dump($this->cache->get_metadata('my_cached_item'));

Drivers

Alternative PHP Cache (APC) Caching

以上所列出的函數都是能夠不經由 adapter 就能直接執行:

$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);

想知道更多的 APC 資訊,請上 http://php.net/apc

File-based Caching

不像其它方式,file-based 的快取能允許快取小量的 view 資訊,但請注意,由於磁碟 I/O 的關係,可能會減少快取的效益

以上所列出的函數都是能夠不經由 adapter 就能直接執行:

$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);

Memcached Caching

要啟動多個 Memcached Caching 可以在 memcached.php 設定,檔案位置: application/config/

以上所列出的函數都是能夠不經由 adapter 就能直接執行:

$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);

想知道更多的 Memcached 資訊,請上 http://php.net/memcached

Dummy Cache

這是快取的末端,它並不儲存快取資料,但是它能在你的 driver 不支援時,保有你的快取程式碼在系統環境中