對於PHP開發人員來說,PHP緩存頁面方法是經常被使用到的,今天關於PHP緩存頁面的方法,和大家分享一下
/*****************************************************************
-- 函數名:cache_page(包括cache_page_go)
-- 作 用:輕松快速緩存全站
-- 參 數:緩存時間(單位:秒)
-- 返回值:輸出內容
-- 實 例:cache_page(300); 函數使用在頁面的最上方
*******************************************************************/
function cache_page($refresh=20){
ob_start();//開啟緩沖區
$temp=sha1($_SERVER['PHP_SELF'].'|G|'.serialize($_GET).'|P|'.serialize($_POST));//緩存文件名字
$temp=dirname(__FILE__).'/cache/'.$temp;//緩存文件路徑
if(!file_exists($temp)){//緩存文件不存在
register_shutdown_function('cache_page_go',$temp);
}else{//緩存文件存在
if((time()-filemtime($temp))>$refresh ){//緩存超時
register_shutdown_function('cache_page_go',$temp);//調用函數
}else{//正常使用緩存文件
$temp=file_get_contents($temp);//取出緩存文件內容
echo $temp;//輸出緩存內容
$temp=ob_get_contents();//取出緩沖區內容
ob_get_clean(); //清空緩沖區
echo $temp; //輸出
unset($temp,$refresh);/*注銷變量*/
exit();
}
}
}
function cache_page_go($file){
$output=ob_get_contents();//獲取緩沖區內容
ob_get_clean(); //清空緩沖區
file_put_contents($file,$output,LOCK_EX);//寫入緩存文件
echo $output;//輸出緩存內容
unset($output,$file);/*注銷變量*/
exit();
}
建議將該函數放置在頁面的最開始處