php ob快取實現頁面靜態化

2021-07-30 08:16:18 字數 2458 閱讀 5127

首先,修改php.ini配置項為

;output_buffering =4096
來看個例子

<?php

for($i = 0; $i

< 10; $i++)

//效果:瀏覽器停頓10秒,第十秒才一次輸出0123456789

修改**為

<?php

for($i = 0; $i

< 10; $i++)

//效果:瀏覽器每隔一秒輸出乙個數字

這就是php程式快取的概念:test.php從上到下執行,所有的輸出都會先放到程式快取,整個test.php執行完畢,才把程式快取裡的內容打包,傳送給瀏覽器

接下來,再修改php.ini,output_buffering = 4096(去掉前面的分號)

<?php

for($i = 0; $i

< 10; $i++)

//效果:瀏覽器停頓10秒,第十秒才一次輸出0123456789

ob快取開啟時,test.php中的輸出先放到了ob快取,整個test.php執行完畢,才將所有輸出結果重新整理到程式快取

再看乙個例子:

關閉ob快取,;output_buffering = 4096

<?php

echo

'hello100';

header('charset=utf-8');

echo

'hello200';

//效果:會報錯,提示不能修改header頭(http協議有head和body,要求head必須在body上)

開啟ob快取,output_buffering = 4096

<?php

echo

'hello100';

header('charset=utf-8');

echo

'hello200';

//效果:不會報錯,正常輸出。

//執行過程分析:'hello100'放入ob快取,header放入程式快取,'hello200'放入ob快取。test2.php執行完畢,將ob快取中的'hello100'

'hello200'重新整理到程式快取中,這樣header頭資訊仍然在ob快取內容的上面,故不會報錯

ob快取的特性:只快取輸出內容(echo/var_dump/print_r()/html文字),而header資訊,是不會執行ob快取的,直接放在程式快取

//ob快取的其他函式

ob_start();

ob_end_flush();//將ob快取中的內容,刷到程式快取中!並關閉ob快取

ob_flush();//將ob快取中的內容,刷到程式快取中!但並沒有關閉ob快取

ob_get_contents();//獲取當前ob快取中的內容

ob_clean();//將ob快取中的內容清空

ob_end_clean();//將ob快取中的內容清空,並關閉ob快取

實現頁面靜態化,**不優雅,理解思路即可

<?php

$id=$_request['id'];

//判斷快取檔案是否存在,如果存在,直接輸出

if(file_exists('content'.$id.'.html'))

//開啟快取機制

ob_start();

//到資料庫中查詢所需要的內容

$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;

//將輸出的內容儲存到檔案中,形成靜態頁面,在下次訪問的時候,直接讀取輸出

file_put_contents('content'.$id.'.html',ob_get_contents());

?>

頁面快取靜態化

本人比較熟悉的模組 頁面的靜態化 a 頁面的靜態化是將動態的html展示給使用者,節省使用者訪問資料庫的時間,快取了資料庫的資料,可以設定重新整理頁面的時間,是比較常見的技術,但是要注意的是,與使用者有關的資料不要靜態化。b 在廣告模組中遍歷所有的商品類別和多級類別,商品廣告的內容 c 在html中...

php頁面靜態化 偽靜態化ob快取使用

什麼是php靜態化 php靜態化的簡單理解就是使 生成頁面以靜態html的形式展現在訪客面前,php靜態化分純靜態化和偽靜態化,兩者的區別在於php生成靜態頁面的處理機制不同。真靜態化,也稱為磁碟快取 將資料持久化儲存到磁碟中,伺服器重啟 關機等操作不會造成資料的丟失 偽靜態化,也稱為記憶體快取 將...

php實現頁面靜態化

php生成靜態html頁面的方法 1.gid get gid 0 商品id goods statis file goods file gid.html 對應靜態頁檔案 expr 3600 24 10 靜態檔案有效期,十天 if file exists goods statis file else e...