利用php的ob緩存機(jī)制實(shí)現(xiàn)頁面靜態(tài)化方法
首先介紹一下php中ob緩存常用到的幾個(gè)常用函數(shù)
ob_start():開啟緩存機(jī)制
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強(qiáng)制刷新輸出緩存中的內(nèi)容
按照http協(xié)議的規(guī)定,回應(yīng)內(nèi)容不能在回應(yīng)頭之前輸出,所以,如果在header()函數(shù)前面有內(nèi)容輸出,就會(huì)出現(xiàn)錯(cuò)誤,但使用了ob_start()后就會(huì)將回應(yīng)內(nèi)容先放在ob緩存中,不會(huì)再消息頭發(fā)送之前被發(fā)送,就解決了header()報(bào)錯(cuò)的問題!
下面說一下用php自帶的ob緩存機(jī)制實(shí)現(xiàn)頁面靜態(tài)化的方法,示例代碼如下
<?php
$id=$_REQUEST['id'];
//判斷緩存文件是否存在,如果存在,直接輸出
if(file_exists('content'.$id.'.html')){
echo file_get_contents('content'.$id.'.html');
return;
}
//開啟緩存機(jī)制
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)頁面,在下次訪問的時(shí)候,直接讀取輸出
file_put_contents('content'.$id.'.html',ob_get_contents());
?>
如上述代碼所示:
將我們查詢到的內(nèi)容直接保存到html文件中,如果文件存在,之間輸出,如果不存在,則訪問數(shù)據(jù)庫,執(zhí)行對(duì)應(yīng)的查詢過程
如果要設(shè)置文件的過期時(shí)間,可以在if語句里面加一個(gè)判斷條件,用于判斷緩存文件是否過期,time()-設(shè)置的過期時(shí)間
以上這篇利用php的ob緩存機(jī)制實(shí)現(xiàn)頁面靜態(tài)化方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- PHP實(shí)現(xiàn)頁面靜態(tài)化深入講解
- PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解
- PHP單例模式數(shù)據(jù)庫連接類與頁面靜態(tài)化實(shí)現(xiàn)方法
- 實(shí)例講解PHP頁面靜態(tài)化
- PHP 實(shí)現(xiàn)頁面靜態(tài)化的幾種方法
- 詳解php實(shí)現(xiàn)頁面靜態(tài)化原理
- PHP實(shí)現(xiàn)頁面靜態(tài)化的超簡單方法
- PHP實(shí)現(xiàn)HTML頁面靜態(tài)化的方法
- PHP頁面靜態(tài)化的優(yōu)缺點(diǎn)與實(shí)現(xiàn)
相關(guān)文章
Laravel 5框架學(xué)習(xí)之表單驗(yàn)證
Laravel 通過 Validation 類讓您可以簡單、方便的驗(yàn)證數(shù)據(jù)正確性及查看相應(yīng)的驗(yàn)證錯(cuò)誤信息。如果是更復(fù)雜的驗(yàn)證場景,你可能需要?jiǎng)?chuàng)建一個(gè)"表單請(qǐng)求"。表單請(qǐng)求是一個(gè)自定義的請(qǐng)求類包含了一些驗(yàn)證的邏輯。你可以通過 Artisan 的命令行 make:request 來創(chuàng)建一個(gè)表單請(qǐng)求類2015-04-04
Yii2實(shí)現(xiàn)UploadedFile上傳文件示例
這篇文章主要介紹了Yii2實(shí)現(xiàn)UploadedFile上傳文件示例的資料,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-02-02
ThinkPHP進(jìn)程計(jì)數(shù)類Process用法實(shí)例詳解
這篇文章主要介紹了ThinkPHP進(jìn)程計(jì)數(shù)類Process用法,以實(shí)例形式較為詳細(xì)的分析了Process類的定義及進(jìn)程計(jì)數(shù)的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
php nginx 實(shí)時(shí)輸出的簡單實(shí)現(xiàn)方法
本文通過實(shí)例代碼給大家介紹了php nginx 實(shí)時(shí)輸出的簡單實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-01-01
php操作xml并將其插入數(shù)據(jù)庫的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猵hp操作xml并將其插入數(shù)據(jù)庫的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
php中配置文件保存修改操作 如config.php文件的讀取修改等操作
有時(shí)候我們需要用php將一些配置參數(shù)寫到文件里面,方便后期讀取使用,這里就為大家分享一下具體的實(shí)現(xiàn)代碼,需要的朋友可以參考一下2021-05-05
PHP實(shí)現(xiàn)無限分類的實(shí)現(xiàn)方法
無限級(jí)分類是一種設(shè)計(jì)技巧,在開發(fā)中經(jīng)常使用,本篇文章主要介紹PHP實(shí)現(xiàn)無限分類的實(shí)現(xiàn)方法,有需要的可以了解一下。2016-11-11
php array_walk_recursive 使用自定的函數(shù)處理數(shù)組中的每一個(gè)元素
php中,如果需要對(duì)數(shù)組中的每個(gè)元素進(jìn)行一定規(guī)則的處理,我們可以使用array_walk_recursive,array_walk_recursive函數(shù)用于對(duì)數(shù)組中的每個(gè)成員遞歸地應(yīng)用用戶函數(shù)。本文章通過實(shí)例向大家講解array_walk_recursive函數(shù)的使用方法2016-11-11
Laravel框架FormRequest中重寫錯(cuò)誤處理的方法
這篇文章主要介紹了Laravel框架FormRequest中重寫錯(cuò)誤處理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02

