首頁  >  文章  >  後端開發  >  php的ob快取機制實作頁面靜態化的方法詳解

php的ob快取機制實作頁面靜態化的方法詳解

墨辰丷
墨辰丷原創
2018-05-19 14:29:551507瀏覽

這篇文章主要介紹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[&#39;id&#39;];
    
    //判断缓存文件是否存在,如果存在,直接输出
    if(file_exists(&#39;content&#39;.$id.&#39;.html&#39;)){
      echo file_get_contents(&#39;content&#39;.$id.&#39;.html&#39;);
      return;
    }
    
    //开启缓存机制
    ob_start();
    
    //到数据库中查询所需要的内容
    $conn=mysql_connect("localhost","root","root");
    mysql_select(&#39;db&#39;);
    mysql_query(&#39;set names utf8&#39;);
    
    $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(&#39;content&#39;.$id.&#39;.html&#39;,ob_get_contents());


?>

如上述程式碼所示:

將我們查詢到的內容直接儲存到html檔案中,如果檔案存在,之間輸出,如果不存在,則存取資料庫,執行對應的查詢過程

如果要設定檔案的過期時間,可以在if語句裡面加一個判斷條件,用來判斷快取檔案是否過期,time()-設定的過期時間

以上這篇利用php的ob快取機制實作頁面靜態化方法就是小編分享給大家的全部內容了,希望能給大家一個參考。

相關推薦:

#解析php如何利用ob快取機制實作頁面靜態化解決方案

#php ob快取介紹以及ob函式詳解

#php的ob快取

#

以上是php的ob快取機制實作頁面靜態化的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn