php的緩衝機制實現頁面靜態化代碼分享

來源:互聯網
上載者:User
本文主要為大家帶來一篇利用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()-設定的到期時間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.