PHP程序加速探索之緩存輸出
添加時(shí)間:2014-7-29 4:34:33
添加:
思海網(wǎng)絡(luò)
內(nèi)容緩存輸出 PEAR cache
接下來我們開始探索更常用的緩存技術(shù),這也是本文的重點(diǎn)部份。首先我們使用PEAR中的cache包。PEAR可以將內(nèi)容緩存于文件,數(shù)據(jù)庫(kù)或者內(nèi)存中,我們以文件為例。
下面是一個(gè)沒有使用緩存的PHP小程序:
pear_content_cache1.php
<?php
echo "這是內(nèi)容。<P>";
echo "當(dāng)前時(shí)間是" . date('M-d-Y H:i:s A', time()) . "<BR>";
?>
上面這個(gè)程序非常簡(jiǎn)單,現(xiàn)在我們?yōu)槠浼由暇彺妗?/span>
pear_content_cache2.php
<?php
require_once 'Cache/Output.php';
//設(shè)置緩存目錄,必須是可寫的
$cacheDir = './pear_cache';
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
//如果nocache變量為空,使用緩存中的內(nèi)容
//如果想獲得最新的內(nèi)容,就要賦值給nocache變量
if (empty($_REQUEST['nocache']))
{
// 建立一個(gè)獨(dú)一的cache標(biāo)識(shí)
// 請(qǐng)求+Cookie信息
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
}
else
{
//想獲得最新的內(nèi)容,ID為空
$cache_id = null;
}
//看cache ID對(duì)應(yīng)的緩存內(nèi)容是否可用
if ($content = $cache->start($cache_id))
{
//緩存已存在,直接輸出,并結(jié)束腳本
echo $content;
exit();
}
// 緩存中不存在該內(nèi)容,生成新內(nèi)容并寫入緩存
echo "這是內(nèi)容。<P>";
echo "當(dāng)前時(shí)間是" . date('M-d-Y H:i:s A', time()) . "<BR>";
// 把內(nèi)容寫入緩存
echo $cache->end();
?>
分別刷新這兩個(gè)文件,你會(huì)發(fā)現(xiàn)pear_content_cache1.php中的“當(dāng)前時(shí)間是”這一行中的時(shí)間是隨著刷新而變化的,而pear_content_cache2.php中的這一行則不變。這是由于pear_content_cache2.php使用了緩存,將用戶請(qǐng)求的內(nèi)容存入靜態(tài)文件中。當(dāng)用戶再次請(qǐng)求時(shí),它直接從文件中輸出,而不需要用程序動(dòng)態(tài)生成內(nèi)容。
對(duì)于pear_content_cache2.php,如果用戶想要讀取最新的信息,而不是緩存中成舊的信息。那么可以用http://…/pear_content_cache2.php?nocache=1 來訪問,這將禁用緩存功能。刷新一下看看,你將發(fā)現(xiàn)時(shí)間會(huì)隨之變化。
總結(jié)一下PEAR內(nèi)容緩存類的使用:
1.包含PEAR包 要注意設(shè)對(duì)路徑。
2.包含Output.php中的cache類
require_once 'Cache/Output.php';
3.設(shè)置緩存目錄
$cacheDir = './pear_cache';
接下來我們開始探索更常用的緩存技術(shù),這也是本文的重點(diǎn)部份。首先我們使用PEAR中的cache包。PEAR可以將內(nèi)容緩存于文件,數(shù)據(jù)庫(kù)或者內(nèi)存中,我們以文件為例。
下面是一個(gè)沒有使用緩存的PHP小程序:
pear_content_cache1.php
<?php
echo "這是內(nèi)容。<P>";
echo "當(dāng)前時(shí)間是" . date('M-d-Y H:i:s A', time()) . "<BR>";
?>
上面這個(gè)程序非常簡(jiǎn)單,現(xiàn)在我們?yōu)槠浼由暇彺妗?/span>
pear_content_cache2.php
<?php
require_once 'Cache/Output.php';
//設(shè)置緩存目錄,必須是可寫的
$cacheDir = './pear_cache';
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
//如果nocache變量為空,使用緩存中的內(nèi)容
//如果想獲得最新的內(nèi)容,就要賦值給nocache變量
if (empty($_REQUEST['nocache']))
{
// 建立一個(gè)獨(dú)一的cache標(biāo)識(shí)
// 請(qǐng)求+Cookie信息
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
}
else
{
//想獲得最新的內(nèi)容,ID為空
$cache_id = null;
}
//看cache ID對(duì)應(yīng)的緩存內(nèi)容是否可用
if ($content = $cache->start($cache_id))
{
//緩存已存在,直接輸出,并結(jié)束腳本
echo $content;
exit();
}
// 緩存中不存在該內(nèi)容,生成新內(nèi)容并寫入緩存
echo "這是內(nèi)容。<P>";
echo "當(dāng)前時(shí)間是" . date('M-d-Y H:i:s A', time()) . "<BR>";
// 把內(nèi)容寫入緩存
echo $cache->end();
?>
分別刷新這兩個(gè)文件,你會(huì)發(fā)現(xiàn)pear_content_cache1.php中的“當(dāng)前時(shí)間是”這一行中的時(shí)間是隨著刷新而變化的,而pear_content_cache2.php中的這一行則不變。這是由于pear_content_cache2.php使用了緩存,將用戶請(qǐng)求的內(nèi)容存入靜態(tài)文件中。當(dāng)用戶再次請(qǐng)求時(shí),它直接從文件中輸出,而不需要用程序動(dòng)態(tài)生成內(nèi)容。
對(duì)于pear_content_cache2.php,如果用戶想要讀取最新的信息,而不是緩存中成舊的信息。那么可以用http://…/pear_content_cache2.php?nocache=1 來訪問,這將禁用緩存功能。刷新一下看看,你將發(fā)現(xiàn)時(shí)間會(huì)隨之變化。
總結(jié)一下PEAR內(nèi)容緩存類的使用:
1.包含PEAR包 要注意設(shè)對(duì)路徑。
2.包含Output.php中的cache類
require_once 'Cache/Output.php';
3.設(shè)置緩存目錄
$cacheDir = './pear_cache';
確認(rèn)這個(gè)目錄是可寫的。Cache數(shù)據(jù)將會(huì)寫入這個(gè)目錄的子目錄中。
關(guān)鍵字:PHP、程序、緩存、數(shù)據(jù)
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解