php利用ob緩衝機制實現頁面靜態化方法全解

來源:互聯網
上載者:User

標籤:tar   sel   flush   頁面靜態化   資料   cal   sql   頁面   etc   

首先介紹一下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緩衝機制實現頁面靜態化的方法

 1 <?php 2     3     $id=$_REQUEST[‘id‘]; 4       5     //判斷快取檔案是否存在,如果存在,直接輸出 6     if(file_exists(‘content‘.$id.‘.html‘)){ 7       echo file_get_contents(‘content‘.$id.‘.html‘); 8       return; 9     }10      11     //開啟緩衝機制12     ob_start();13      14     //到資料庫中查詢所需要的內容15     $conn=mysql_connect("localhost","root","root");16     mysql_select(‘db‘);17     mysql_query(‘set names utf8‘);18      19     $sql="select content from table_name where id=$id";20     $res=mysql_query($sql);21     $row=mysql_fetch_assoc($res);22     $content=$row[0];23      24     mysql_free_result($res);25     mysql_close($conn);26     echo $content;27     //將輸出的內容儲存到檔案中,形成靜態頁面,在下次訪問的時候,直接讀取輸出28     file_put_contents(‘content‘.$id.‘.html‘,ob_get_contents());29  30  31 ?>

 

 

如上述代碼所示:

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

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

php利用ob緩衝機制實現頁面靜態化方法全解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.