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