使用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>
}
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函數實作頁面的靜态化,大概步驟如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-YWan5iY1ETYlZDN3UDOhFTN2YjZ1EjYjlzYlBjZllTZkVWZ18CX2IzLcVDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.gif)
<?php ob_start();//開啟緩存
?>
<p>我是要生成的靜态内容,也可以在該處連結資料庫生成動态内容于此</p>
<?php
file_put_contents( 'index.html', ob_get_clean() );//把生成的靜态内容儲存到index.html檔案,而不是輸出到浏覽器
?>
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-YWan5iY1ETYlZDN3UDOhFTN2YjZ1EjYjlzYlBjZllTZkVWZ18CX2IzLcVDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.gif)
摘自網絡:
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>