php的ob函式實現頁面靜態化

2022-03-23 04:17:31 字數 1232 閱讀 3794

首先介紹一下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 清空快取,輸出內容,但不關閉快...