靜態(tài)頁面,只要把目錄地址保存在數(shù)據(jù)庫里調(diào)用,但是有些動(dòng)態(tài)的信息,比如登錄信息,文章點(diǎn)擊數(shù)等需要做動(dòng)態(tài)的改變,這種情況主要通過js和重新生成靜態(tài)頁面來顯示.
這里給出兩種生成靜態(tài)頁面的方法:
一、通過ob函數(shù)來控制瀏覽器輸出。
ob_start();
include template(‘index’);
$data = ob_get_contents();
ob_clean();
file_put_contents($filename, $data);
二、通過預(yù)先得知這個(gè)頁面的地址來通過網(wǎng)頁抓取。
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);
}
偽靜態(tài)的優(yōu)點(diǎn)主要在于靈活,相對(duì)于靜態(tài)文件就是不需要額外的腳本來生成或控制靜態(tài)頁面的內(nèi)容,不占用服務(wù)器空間。由于是服務(wù)器內(nèi)部解析的地址,所以內(nèi)容是實(shí)時(shí)更新的,也不存在文件管理和硬件問題,維護(hù)比較方便。在服務(wù)器級(jí)URL Rewrite重寫技術(shù)并不影響頁面的執(zhí)行速度。但是URL Rewrite的門檻比較高,國(guó)內(nèi)虛擬主機(jī)大多不支持,而且虛擬主機(jī)是目錄級(jí)的url Rewrite,通過遍歷目錄讀物URL轉(zhuǎn)發(fā)規(guī)則的方式將大大降低頁面的執(zhí)行速度。
靜態(tài)頁面的好處在于少了動(dòng)態(tài)解析過程,提高了頁面的訪問速度和穩(wěn)定性,使得優(yōu)化效果非常明顯。對(duì)數(shù)據(jù)庫和服務(wù)器的軟件資源耗費(fèi)少。但是占用了服務(wù)器的硬件資源,對(duì)于大型網(wǎng)站而言,這種方法將帶來不可忽視的后繼問題:
由于生成的文件數(shù)量較多,存儲(chǔ)需要考慮文件、文件夾的數(shù)量問題和磁盤空間容量的問題,需要大量的服務(wù)器設(shè)備;程序?qū)㈩l繁地讀寫站點(diǎn)中較大區(qū)域內(nèi)容,考慮磁盤損傷問題及其帶來的事故防范與恢復(fù),硬件損耗要更新、站點(diǎn)備份要到位;頁面維護(hù)的復(fù)雜性和大工作量,及帶來的頁面維護(hù)及時(shí)性問題,需要一整套站點(diǎn)更新制度和專業(yè)的站點(diǎn)維護(hù)人員;
對(duì)于第三種方式,php業(yè)界流行的框架比如zend,thinkphp就應(yīng)用的比較多,歸根結(jié)底,他們?cè)谀承l件下也缺少不了.htaccess這個(gè)文件,因?yàn)樗麄兊哪康亩际窍胍阉械倪B接(除過圖片,js,css)都指向index.php這個(gè)文件。這里用到的主要技術(shù)之一便是pathinfo,關(guān)于pathinfo的原理,這里就不再做過多討論了。這種技術(shù)和用.htaccess技術(shù)的區(qū)別就在于沒有使用.htaccess文件,好像說的是廢話,不過還是需要注意的。
所以綜合上訴原因,個(gè)人認(rèn)為:
對(duì)于一般企業(yè)網(wǎng)站,個(gè)人網(wǎng)站,這些網(wǎng)站信息一旦發(fā)布就很少更改,網(wǎng)站信息量不多的情況下,而且一般使用的是虛擬主機(jī),可以選擇生成靜態(tài)頁的方式。
對(duì)于大型網(wǎng)站,信息量巨大,具有獨(dú)立服務(wù)器,可采用URL Rewrite 的方式。
對(duì)于一些中型網(wǎng)站,使用虛擬主機(jī)的就采用生成靜態(tài)頁的方式,有條件購(gòu)置服務(wù)器的可視具體網(wǎng)站類型而定,若網(wǎng)站交互性較強(qiáng),局部更新內(nèi)容比較多的話,可以采用Rewrite,若頁面內(nèi)容比較固定的話,使用靜態(tài)頁生成技術(shù)效果就更佳。