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 不支援時,保有你的快取程式碼在系統環境中