靜態頁面,只要把目錄地址保存在數據庫里調用,但是有些動態的信息,比如登錄信息,文章點擊數等需要做動態的改變,這種情況主要通過js和重新生成靜態頁面來顯示.
這里給出兩種生成靜態頁面的方法:
一、通過ob函數來控制瀏覽器輸出。
ob_start();
include template(‘index’);
$data = ob_get_contents();
ob_clean();
file_put_contents($filename, $data);
二、通過預先得知這個頁面的地址來通過網頁抓取。
function create_html($filepath, $phpfile, $page = 1){
global $siteurl;
$filepath = ROOT.$filepath;
$htmlpath = substr($filepath,0,strrpos($filepath,”/”));
if(!is_dir($htmlpath))makeDirs($htmlpath);
$contents = dfile_get_contents($siteurl.$phpfile);
dfile_put_contents($filepath, $contents);
}
偽靜態的優點主要在于靈活,相對于靜態文件就是不需要額外的腳本來生成或控制靜態頁面的內容,不占用服務器空間。由于是服務器內部解析的地址,所以內容是實時更新的,也不存在文件管理和硬件問題,維護比較方便。在服務器級URL Rewrite重寫技術并不影響頁面的執行速度。但是URL Rewrite的門檻比較高,國內虛擬主機大多不支持,而且虛擬主機是目錄級的url Rewrite,通過遍歷目錄讀物URL轉發規則的方式將大大降低頁面的執行速度。
靜態頁面的好處在于少了動態解析過程,提高了頁面的訪問速度和穩定性,使得優化效果非常明顯。對數據庫和服務器的軟件資源耗費少。但是占用了服務器的硬件資源,對于大型網站而言,這種方法將帶來不可忽視的后繼問題:
由于生成的文件數量較多,存儲需要考慮文件、文件夾的數量問題和磁盤空間容量的問題,需要大量的服務器設備;程序將頻繁地讀寫站點中較大區域內容,考慮磁盤損傷問題及其帶來的事故防范與恢復,硬件損耗要更新、站點備份要到位;頁面維護的復雜性和大工作量,及帶來的頁面維護及時性問題,需要一整套站點更新制度和專業的站點維護人員;
對于第三種方式,php業界流行的框架比如zend,thinkphp就應用的比較多,歸根結底,他們在某些條件下也缺少不了.htaccess這個文件,因為他們的目的都是想要把所有的連接(除過圖片,js,css)都指向index.php這個文件。這里用到的主要技術之一便是pathinfo,關于pathinfo的原理,這里就不再做過多討論了。這種技術和用.htaccess技術的區別就在于沒有使用.htaccess文件,好像說的是廢話,不過還是需要注意的。
所以綜合上訴原因,個人認為:
對于一般企業網站,個人網站,這些網站信息一旦發布就很少更改,網站信息量不多的情況下,而且一般使用的是虛擬主機,可以選擇生成靜態頁的方式。
對于大型網站,信息量巨大,具有獨立服務器,可采用URL Rewrite 的方式。
對于一些中型網站,使用虛擬主機的就采用生成靜態頁的方式,有條件購置服務器的可視具體網站類型而定,若網站交互性較強,局部更新內容比較多的話,可以采用Rewrite,若頁面內容比較固定的話,使用靜態頁生成技術效果就更佳。