最近接觸到了CodeIgniter開(kāi)源輕量級(jí)架構(gòu),集合了開(kāi)發(fā)中常用的類(lèi)和功能函數(shù),關(guān)于CodeIgniter的緩存總結(jié)有以下幾點(diǎn):
1. 數(shù)據(jù)庫(kù)緩存
數(shù)據(jù)庫(kù)緩存主要是針對(duì)于SELECT查詢(xún)
// 打開(kāi)緩存開(kāi)關(guān)
$this->db->cache_on();
$query1 = $this->db->query("SELECT * FROM mytable");
// 使下面這條查詢(xún)不被緩存
$this->db->cache_off();
$query2 = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");
// 再次打開(kāi)緩存開(kāi)關(guān)
$this->db->cache_on();
$query3 = $this->db->query("SELECT * FROM another_table");
這樣query1和query3就被緩存在文件中了,緩存的路徑根據(jù)您的URL而定,如example.com/index.php/blog/comments的頁(yè)面, 緩存系統(tǒng)會(huì)把所有生成的緩存文件放進(jìn)一個(gè)以 blog+comments做為名稱(chēng)的文件夾里. 如果您要?jiǎng)h除關(guān)于剛才提到的這個(gè)例子與之對(duì)應(yīng)的緩存文件 需要執(zhí)行以下代碼:
$this->db->cache_delete('blog', 'comments');//$this->db->cache_delete('blog', 'comments')#來(lái)刪除緩存
如果要清除所有數(shù)據(jù)庫(kù)緩存:
$this->db->cache_delete_all();
*其cache模式在于針對(duì)不同的uri就會(huì)生成cache文件,如果URL中參數(shù)不同,則 cache文件就會(huì)不同,從而產(chǎn)生了漏洞。如果訪(fǎng)問(wèn)者構(gòu)建自動(dòng)生成URI,不斷向服務(wù)器發(fā)起請(qǐng)求,就會(huì)瞬間產(chǎn)生大量的垃圾文件,導(dǎo)致系統(tǒng)文件臃腫。
2. 頁(yè)面緩存
$this->output->cache(n); // 請(qǐng)確保application/cache可寫(xiě)
n 是你希望緩存更新的 分鐘 數(shù)。可以使用 m/60 來(lái)精確到秒,例如 1/60 ,則是精確到 1秒
3. 序例化緩存到文件
$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;
延伸閱讀:http://codeigniter.org.cn/user_guide/drivers/caching.html