織夢(mèng)DedeCMS在國(guó)內(nèi)算是比較流行的開(kāi)源cms,大多數(shù)個(gè)人網(wǎng)站及企業(yè)網(wǎng)站都選用了織夢(mèng)DedeCMS,諸多用戶對(duì)織夢(mèng)DedeCMS的緩存結(jié)構(gòu)卻并不是很了解,這里我就對(duì)織夢(mèng)DedeCMS的緩存機(jī)制進(jìn)行一下講解。
織夢(mèng)DedeCMS其緩存文件放在data目錄下的cache、tplcache、sessions文件中,詳細(xì)了解的話,我推薦:增強(qiáng)織夢(mèng)DedeCMS“更新系統(tǒng)緩存”清理沉余緩存的功能 http://www.gxchina.com/edu/11185.html
在本節(jié)中,我主要以ask問(wèn)答模塊為例來(lái)看看其緩存的使用。
1.最先調(diào)用ask/index.php,緩存通過(guò)調(diào)用語(yǔ)句
require_once(DEDEASK.'/data/common.inc.php');
實(shí)現(xiàn);
2.ask/data目錄下的文件為生成緩存的主要文件,在ask/data/common.inc.php中調(diào)用了
//載入分類
require_once DEDEASK.'/data/asktype.inc.php';
//載入積分排行
require_once DEDEASK.'/data/scores.inc.php';
這兩個(gè)文件就是生成對(duì)應(yīng)緩存文件和讀取緩存數(shù)據(jù)的關(guān)鍵所在。
3.(1)前臺(tái)ask/data/asktype.inc.php先判斷ask/data/cache/asktype.inc文件是否存在,如果存在則直接讀取該緩存文件的數(shù)據(jù)放在$asktypes中,否則從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)放在$asktypes中并寫入對(duì)應(yīng)緩存文件中。
?。?)后臺(tái)admin可以在模塊/問(wèn)答管理/欄目管理增加分類并提交后會(huì)更新緩存,實(shí)現(xiàn)代碼為ask/controller/admin/asktype.php中的
//更新欄目緩存
function updatecache()
{
$asktypes = $this->type->get_alltype();
$path = DEDEASK."/data/cache/asktype.inc";
$row = serialize($asktypes);
$configstr = "<"."?php\r\n\$asktypes = '".$row."';";
file_put_contents($path, $configstr);
}
通過(guò)$this->updatecache();
更新了對(duì)應(yīng)的緩存文件。
4.ask/data/scores.inc.php是通過(guò)時(shí)間來(lái)控制積分的緩存數(shù)據(jù),如果超過(guò)了緩存時(shí)間則從數(shù)據(jù)庫(kù)讀取數(shù)據(jù),否則文件存在則讀取文件緩存數(shù)據(jù),文件不存在則為空;
生成或更新緩存文件的時(shí)間也放在文件中緩存。
注意transport()函數(shù)中的
$path = $cfg_basehost.'/'.APPNAME."/?ct=index&ac=scores";
對(duì)應(yīng)的文件是ask/controller/index.php中動(dòng)作
//更新總積分排行
function ac_scores()
{
$memberlists = $this->scores->get_scores();
if(count($memberlists) > 0)
{
$row = serialize($memberlists);
$configstr = "<"."?php\r\n\$memberlists = '".$row."';";
file_put_contents(DEDEASK.'/data/cache/scores.inc', $configstr);
}
}
織夢(mèng)DedeCMS的問(wèn)答模塊ask緩存機(jī)制詳解
總結(jié):后臺(tái)管理生成的數(shù)據(jù)據(jù)我所見(jiàn)都會(huì)被緩存,開(kāi)源實(shí)現(xiàn)的主要是文件緩存,一般也提供了memcache等緩存接口,實(shí)現(xiàn)的方式就各有不同!
版權(quán)聲明: 本站資源均來(lái)自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明: 織夢(mèng)DedeCMS的問(wèn)答模塊ask緩存機(jī)制詳解