首先,修改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...