首先介紹一下php中ob快取常用到的幾個常用函式
ob_start():開啟快取機制
ob_get_contents():獲取ob快取中的內容
ob_clean()清除ob快取中的內容,但不關閉快取
ob_end_clean() 清除ob快取中的內容,並關閉快取
ob_flush 清空快取,輸出內容,但不關閉快取
ob_end_flush 清空快取,輸出內容,並關閉快取
flush強制重新整理輸出快取中的內容
按照http協議的規定,回應內容不能在回應頭之前輸出,所以,如果在header()函式前面有內容輸出,就會出現錯誤,但使用了ob_start()後就會將回應內容先放在ob快取中,不會再訊息頭髮送之前被傳送,就解決了header()報錯的問題!
簡單的案例:
<?php$id = $_get['id'
];$cache_name = md5(__file__) . '
-' . $id .'
.html
'; //
⑤生成快取檔案的名稱
$cache_lifetime = 3600; //
⑩設定乙個過期時間3600秒
//⑨訪問的時候,先判斷是否有靜態檔案,是否沒有被修改,沒有過期,檔案的修改時間如果小於等於快取的修改時間,那麼直接訪問快取檔案
if (filectime(__file__) <= filectime($cache_name) && (file_exists($cache_name) + $cache_lifetime) >time())
ob_start();
//①開啟緩衝區
?>
/*②內容邏輯,這裡只是簡單的一行**,有可能是複雜的查詢之類的
*/<?php
$content = ob_get_contents(); //
③拿到緩衝區內容
ob_end_flush(); //
④拿到之後關閉緩衝區
$handle = fopen($cache_name, '
w'); //
⑥寫入內容,以寫的方式開啟
fwrite($handle, $content);
//⑦往裡面寫內容
fclose($handle);
//⑧關閉
?
PHP之頁面靜態化初試ob函式
推薦閱讀 微服務還能火多久?網頁的前端頁面都會有部分頁面是靜態的,比如頭部 頁尾部分,但當這些引入頁面裡包含php 需要解析,並且長期不做變化的,則會消耗一定的資源,比如如下footer.html頁面,所以,將它們靜態化處理,是一種不錯的選擇手段。分享 呼叫改函式需要先檢測靜態化檔案是否生成了,如果...
php頁面靜態化 偽靜態化ob快取使用
什麼是php靜態化 php靜態化的簡單理解就是使 生成頁面以靜態html的形式展現在訪客面前,php靜態化分純靜態化和偽靜態化,兩者的區別在於php生成靜態頁面的處理機制不同。真靜態化,也稱為磁碟快取 將資料持久化儲存到磁碟中,伺服器重啟 關機等操作不會造成資料的丟失 偽靜態化,也稱為記憶體快取 將...
php利用ob快取機制實現頁面靜態化方法全解
首先介紹一下php 中ob快取常用到的幾個常用函式 ob start 開啟快取機制 ob get contents 獲取ob快取中的內容 ob clean 清除ob快取中的內容,但不關閉快取 ob end clean 清除ob快取中的內容,並關閉快取 ob flush 清空快取,輸出內容,但不關閉快...