本文主要為大家帶來一篇利用php的ob快取機制實作頁面靜態化方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。
首先介紹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自帶的ob快取機制實作頁面靜態化的方法,範例程式碼如下
<?php $id=$_REQUEST['id']; //判断缓存文件是否存在,如果存在,直接输出 if(file_exists('content'.$id.'.html')){ echo file_get_contents('content'.$id.'.html'); return; } //开启缓存机制 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()); ?>
如上述程式碼所示:
將我們查詢到的內容直接儲存到html檔案中,如果檔案存在,之間輸出,如果不存在,則存取資料庫,執行對應的查詢過程
如果要設定檔案的過期時間,可以在if語句裡面加一個判斷條件,用於判斷快取檔案是否過期,time()-設定的過期時間。
相關推薦:
以上是php的快取機制實作頁面靜態化程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!