PHP頁面的靜態化頗有必要,尤爲是在CMS系統中,一些內容一旦生成,基本上不會有變化,這時若是用html將頁面靜態化,無疑會減小服務其解析PHP頁面的負擔。如下是看書學來的PHP靜態化技術,記錄之以備不時之需。php
不管是利用框架仍是簡單的腳本,原理基本一致:就是利用PHP進行文件操做,替換html模板中的動態元素。html
簡單的例子:mysql
1.創建模板(template.html)sql
<html>框架
<head>ide
<title>一篇文章</title>函數
</head>指針
<body>htm
<div id = "headline">%headline%</div>圖片
<div id = "content">%content%</div>
</body>
</html>
模板很簡單,要填充的有2條數據分別是文章題目(%headline%)、文章內容(%content%),這些東西就是所謂的動態元素。
2.靜態化腳本(toStatic.php)
<?php
//Replace函數用於將從模版文件中讀取的內容中的關鍵字替換成變量中的內容
function Replace($row, $headline = '', $content = '')
{
//替換參數中的關鍵字
$row = str_replace("%headline%", $headline, $row);
$row = str_replace("%content%", $content, $row);
//返回替換後的結果
return $row;
}
//主程序
$connection = mysql_connect("localhost", "username", "password") or die(mysql_error());
$database = mysql_select_db($connection, "dbname") or die(mysql_error());
//新添加的文章信息
$headline = $_POST['headline'];
$content = $_POST['content'];
//生成文件名,這裏用日期時間
$filename = 'S'.date("YmdHis").'.html';
//執行SQL語句
$sql = "insert into news values('$headline', '$content', '$filename')";
$res = mysql_query($sql);
//根據SQL執行語句返回的bool型變量判斷是否插入成功
if($res)
{
//模版文件指針
$f_tem = fopen("template.html","r");
//生成的文件指針
$f_new = fopen($filename,"w");
//循環讀取模版文件,每次讀取一行
while(!feof($f_tem))
{
$row = fgets($f_tem);
//替換讀入內容中的關鍵字
$row = Replace($row, $headline, $content);
//將替換後的內容寫入生成的HTML文件
fwrite($f_new, $row);
}
//關閉文件指針
fclose($f_new);
fclose($f_tem);
//提示
echo "OK!";
}
else
echo "Failed!";
mysql_close();
?>
3.通常的CMS都會記錄內容被瀏覽的信息,例如瀏覽次數或者瀏覽者的IP信息等,靜態頁面要記錄這些信息,能夠在模板中加入一個長寬都爲0的圖片,指向計數腳本。
以記錄瀏覽次數爲例:
<img '0' height='0' src='counter.php?fileID=S001' />
這樣,計數操做能夠放到counter.php中進行,又不會破壞網頁的靜態性。