我們知道,PHP讀取MYSQL動態顯示,在訪問量大的情況下,會有很多效能問題,如果租用別人的虛擬主機,則會因為CPU消耗過多而被限制CPU,導致網頁無法存取。我在這裡給出一個PHP動態產生HTML的方法,可以大幅降低伺服器CPU負載。
首先設定.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[%26quot;QUERY_STRING%26quot;]) ? $_SERVER[%26quot;QUERY_STRING%26quot;] : %26quot;%26quot;; define(%26quot;HTML_FILE%26quot;, $_SERVER['DOCUMENT_ROOT'].%26quot;/post/%26quot;.$qstring); if (file_exists(HTML_FILE)) { $lcft = filemtime(HTML_FILE); if (($lcft + 3600) %26gt; time()) //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容 { echo(file_get_contents(HTML_FILE)); exit(0); } }
define(%26quot;HTMLMETA%26quot;,%26quot;%26lt;!-- this is a real static html file created at %26quot;.date(%26quot;Y-m-d H:i:s%26quot;).%26quot; --%26gt;%26quot;); $buffer = ob_get_flush(); $fp = fopen(HTML_FILE, %26quot;w%26quot;); if ($fp) { fwrite($fp, $buffer.HTMLMETA); fclose($fp); }
rrreee
好了,然後查看你的靜態HTML頁面,如果頁面尾部出現了註解行,說明已經成功的創建了靜態HTML檔。