利用php的ob緩存機制實現(xiàn)頁面靜態(tài)化方法
首先介紹一下php中ob緩存常用到的幾個常用函數(shù)
ob_start():開啟緩存機制
ob_get_contents():獲取ob緩存中的內(nèi)容
ob_clean()清除ob緩存中的內(nèi)容,但不關(guān)閉緩存
ob_end_clean() 清除ob緩存中的內(nèi)容,并關(guān)閉緩存
ob_flush 清空緩存,輸出內(nèi)容,但不關(guān)閉緩存
ob_end_flush 清空緩存,輸出內(nèi)容,并關(guān)閉緩存
flush強制刷新輸出緩存中的內(nèi)容
按照http協(xié)議的規(guī)定,回應(yīng)內(nèi)容不能在回應(yīng)頭之前輸出,所以,如果在header()函數(shù)前面有內(nèi)容輸出,就會出現(xiàn)錯誤,但使用了ob_start()后就會將回應(yīng)內(nèi)容先放在ob緩存中,不會再消息頭發(fā)送之前被發(fā)送,就解決了header()報錯的問題!
下面說一下用php自帶的ob緩存機制實現(xiàn)頁面靜態(tài)化的方法,示例代碼如下
<?php
$id=$_REQUEST['id'];
//判斷緩存文件是否存在,如果存在,直接輸出
if(file_exists('content'.$id.'.html')){
echo file_get_contents('content'.$id.'.html');
return;
}
//開啟緩存機制
ob_start();
//到數(shù)據(jù)庫中查詢所需要的內(nèi)容
$conn=mysql_connect("localhost","root","root");
mysql_select('db');
mysql_query('set names utf8');
$sql="select content from table_name where id=$id";
$res=mysql_query($sql);
$row=mysql_fetch_assoc($res);
$content=$row[0];
mysql_free_result($res);
mysql_close($conn);
echo $content;
//將輸出的內(nèi)容保存到文件中,形成靜態(tài)頁面,在下次訪問的時候,直接讀取輸出
file_put_contents('content'.$id.'.html',ob_get_contents());
?>
如上述代碼所示:
將我們查詢到的內(nèi)容直接保存到html文件中,如果文件存在,之間輸出,如果不存在,則訪問數(shù)據(jù)庫,執(zhí)行對應(yīng)的查詢過程
如果要設(shè)置文件的過期時間,可以在if語句里面加一個判斷條件,用于判斷緩存文件是否過期,time()-設(shè)置的過期時間
以上這篇利用php的ob緩存機制實現(xiàn)頁面靜態(tài)化方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Yii2實現(xiàn)UploadedFile上傳文件示例
這篇文章主要介紹了Yii2實現(xiàn)UploadedFile上傳文件示例的資料,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-02-02
ThinkPHP進程計數(shù)類Process用法實例詳解
這篇文章主要介紹了ThinkPHP進程計數(shù)類Process用法,以實例形式較為詳細(xì)的分析了Process類的定義及進程計數(shù)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09
php操作xml并將其插入數(shù)據(jù)庫的實現(xiàn)方法
下面小編就為大家?guī)硪黄猵hp操作xml并將其插入數(shù)據(jù)庫的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
php中配置文件保存修改操作 如config.php文件的讀取修改等操作
有時候我們需要用php將一些配置參數(shù)寫到文件里面,方便后期讀取使用,這里就為大家分享一下具體的實現(xiàn)代碼,需要的朋友可以參考一下2021-05-05
php array_walk_recursive 使用自定的函數(shù)處理數(shù)組中的每一個元素
php中,如果需要對數(shù)組中的每個元素進行一定規(guī)則的處理,我們可以使用array_walk_recursive,array_walk_recursive函數(shù)用于對數(shù)組中的每個成員遞歸地應(yīng)用用戶函數(shù)。本文章通過實例向大家講解array_walk_recursive函數(shù)的使用方法2016-11-11
Laravel框架FormRequest中重寫錯誤處理的方法
這篇文章主要介紹了Laravel框架FormRequest中重寫錯誤處理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02

