比方說,我想用php在我的網站上生成動態數據,但我不希望用戶去任何.php
頁面。從PHP保存HTML
相反,我想每晚運行一次php腳本並保存一個.html
文件,以便瀏覽我的網站時用戶只需看到靜態html。
我想象的方式是每個需要動態數據的頁面都有一個.html和一個.php文件。例如:
- newsAndInformation.html
- newsAndInformation.php
這是常見的做法?那裏有很好的教程嗎?
比方說,我想用php在我的網站上生成動態數據,但我不希望用戶去任何.php
頁面。從PHP保存HTML
相反,我想每晚運行一次php腳本並保存一個.html
文件,以便瀏覽我的網站時用戶只需看到靜態html。
我想象的方式是每個需要動態數據的頁面都有一個.html和一個.php文件。例如:
這是常見的做法?那裏有很好的教程嗎?
您可以通過在.htaccess文件中使用巧妙的mod_rewrite規則speed up your site with static pages。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Example/ index.php [L,NC,QSA]
此規則執行以下操作...
檢查該文件不存在請求的URL
檢查一個目錄不存在的請求的URL
如果是 - 顯示靜態文件/目錄(目錄需要一個index.html文件)
如果NO - 重定向到您的PHP文件,它可以運行並保存相應的文件下一個請求
你的PHP文件將吐出的響應:
<?php
ini_set('zlib.output_compression', 'On');
ob_start();
// Logic to create your content...
// use ob_get_contents() to get the response and save it
ob_end_flush();
?>
一粗略的例子將是...
yoursite/Example/Test/
在第一次訪問,這將打你的PHP頁面。然後,您將文件保存到/Example/Test/index.html
,第二個請求將在不使用PHP的情況下爲靜態頁面提供服務。
你可以創建一個簡單的類,使用fwrite
來做到這一點。
如果您有足夠的數據需要更復雜的解決方案,您可以找到更廣泛的緩存系統。
添加在.htaccess
文件中的以下
RewriteEngine on
RewriteRule ^(.*)\.html $1\.php
這將使http://www.domain.com/myPage.html
真正指向http://www.domain.com/myPage.php
但用戶看到.html
您可以編輯'.htaccess'。 – hjpotter92 2013-02-22 17:31:34
這就是所謂的靜態緩存。您可以使用ob_start和ob_get_contents來獲取您生成的代碼並將其放入靜態文件中。您可以使用htaccess來檢查是否存在靜態文件,並在靜態文件存在並且年齡小於xx天時提供靜態文件..這僅僅是一個簡單的例子。 – 2013-02-22 17:31:59
這是因爲你想緩存一些東西還是因爲你想讓它看起來像一個HTML頁面? 因爲有了URL重寫,你可以讓url'/ anypage.html' 指向'anypage.php'而沒有任何人意識到它。 – cIph3r 2013-02-22 17:34:05