其實(shí)之前早就存在這樣一個(gè)問題,只是沒有時(shí)間去考慮是否會(huì)影響到整個(gè)網(wǎng)站結(jié)構(gòu)的內(nèi)部優(yōu)化。忙里偷閑之中我無意找到了解決方案在網(wǎng)上找到的,程序是PHP的,在這里轉(zhuǎn)載分享一下,也希望在以后能夠利用方便一點(diǎn)。
首先設(shè)置.htaccess文件,將動(dòng)態(tài)調(diào)用的參數(shù)轉(zhuǎn)換為靜態(tài)的HTML的URL地址,例如將在post目錄下的文件,轉(zhuǎn)發(fā)到根目錄的wp- post.php文件中,加入的語句類似:RewriteRule ^post/([a-z0-9\-]+\.html)$ wp-post.php?$1$2
然后修改wp-post.php文件,在文件的開頭加入以下PHP代碼:
以下為引用的內(nèi)容:
ob_start();
$qstring = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : "";
define("HTML_FILE", $_SERVER['DOCUMENT_ROOT']."/post/".$qstring);
if (file_exists(HTML_FILE))
{
$lcft = filemtime(HTML_FILE);
if (($lcft + 3600) > time()) //判斷上次生成HTML文件是否超過1小時(shí),若沒有才直接輸出文件內(nèi)容
{
echo(file_get_contents(HTML_FILE));
exit(0);
}
}
之后是現(xiàn)有的PHP的代碼,然后在當(dāng)前代碼的最后面加上如下的PHP代碼:
以下為引用的內(nèi)容:
define("HTMLMETA","");
$buffer = ob_get_flush();
$fp = fopen(HTML_FILE, "w");
if ($fp)
{
fwrite($fp, $buffer.HTMLMETA);
fclose($fp);
}
好了,然后查看你的靜態(tài)HTML頁面,如果頁面尾部出現(xiàn)了注釋行,說明已經(jīng)成功的創(chuàng)建了靜態(tài)HTML文件。
這個(gè)方法的一個(gè)應(yīng)用就是我先前寫的那個(gè)“WordPress年度博客統(tǒng)計(jì)插件”,這個(gè)統(tǒng)計(jì)插件由于查詢十多次數(shù)據(jù)庫,很多人訪問的時(shí)候會(huì)有很大性能問題,使用我介紹的這種動(dòng)態(tài)生成HTML技術(shù)后,一天就查詢一次,生成一次統(tǒng)計(jì)排行,完美解決了查詢數(shù)據(jù)庫的性能問題。