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