php 生成靜態頁面


使用ob函數

<?php require_once(dirname(__FILE__).'/include/config.inc.php'); ?>
<?php
$dosql->Execute("SELECT * FROM `#@__infolist` WHERE delstate='' AND checkinfo=true ORDER BY orderid DESC LIMIT 0,5");

ob_start();//開啟緩存
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
while($row = $dosql->GetArray())
{
?>

<p><?php echo $row['title'];?> +</p>
<?php
}

if(file_put_contents( 'index.html', ob_get_clean() )){

echo 'success';
}else{
echo 'error';
};//把生成的靜態內容保存到index.html文件,而不是輸出到瀏覽器

?>

效果:index。html

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<p>劉若英 +</p>

<p>小宋佳 +</p>

<p>劉華強 +</p>

<p>某某某 +</p>

<p>上海花旗銀行 +</p>

 

 

 

 

純靜態化的實現

利用php內置的ob函數實現頁面的靜態化,大概步驟如下:

 

復制代碼
<?php ob_start();//開啟緩存 
?>
<p>我是要生成的靜態內容,也可以在該處鏈接數據庫生成動態內容於此</p>
<?php 
file_put_contents( 'index.html', ob_get_clean() );//把生成的靜態內容保存到index.html文件,而不是輸出到瀏覽器
?>
復制代碼

摘自網絡:

php頁面靜態化技術;學習筆記

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>

</head>
<body>
<p style="color: #ff9000;">%demo%</p>
</body>
</html>

這是需要替換的頁面

PHP頁面的靜態化很有必要,尤其是在CMS系統中,一些內容一旦生成,基本上不會有變化,這時如果用html將頁面靜態化,無疑會減少服務其解析PHP頁面的負擔。以下是看書學來的PHP靜態化技術,記錄之以備不時之需。

無論是利用框架還是簡單的腳本,原理基本一致:就是利用PHP進行文件操作,替換html模板中的動態元素,不僅能提高用戶的訪問速度還能讓php與html分離,使代碼更具有維護性。

用到的文件操作函數:

fopen()          --------------------       打開一個文件  函數有兩個參數: 1.打開文件的路徑和文件名  2.打開文件所用的模式(字符串形式)   這里用到了r 和 w r代表只讀 w代表只寫

feof()             --------------------       讀取文件直到文件末尾    這個函數會在讀取到文件的末尾返回true  那么就可以用while知道何時讀完文件;函數有一個參數,1.打開的文件指針

fwiter()         --------------------         寫入文件內容,函數有三個參數:1.寫入的文件名稱  2.寫入的內容  3.(可選) 寫入的最大字符數 

fclose()   ------------------------  關閉文件;一般做完所有操作后必須關閉文件;

注意事項: 需要注意文件的路徑;以及讀取文件所需要的權限  ;

<?php
header("Content-type:text/html,charset=utf-8");
/******php靜態化*******/
    class textHtml{
        public function fwriteHtml($r){
            /*php頁面靜態化技術
             *$r [array];
             *route=>生成文件名稱及路徑
             *html=>需要讀取的靜態資源
             *stsyem=>要替換的標簽
             *content=>標簽替換的內容
             * */
            
            $cfill = fopen($r["html"],"r");//讀取的文件名
            $cfillnew = fopen($r["route"],"w");
            while(!feof($cfill)){
                $row = fgets($cfill);


                $res = str_replace($r["stsyem"],$r["content"],$row);    //替換內容
               
         fwrite($cfillnew,$res);//寫入html文件
            }
            /*關閉文件*/
            fclose($cfill);
            fclose($cfillnew);
        }
    }
    
    
    $f = new textHtml;
    $fillname = microtime().".html";
    $content = "這是一個頁面靜態化技術";
    $r["route"] = $fillname;
    $r["html"] = "index.html";
    $r["stsyem"] = "%demo%";
    $r["content"] = $content;
    
    $f->fwriteHtml($r);
?>

  最后得到的結果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>全國城市三級聯動</title>

</head>
<body>
        <p style="color: #ff9000;">這是一個頁面靜態化技術</p>
</body>
</html>

利用php靜態化技術可以更好的實現網頁功能 ; 在創建文章或者一些不經常改變內容中都可以用到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM