


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