關(guān)于頁面優(yōu)化和偽靜態(tài)
更新時間:2009年10月11日 15:08:13 作者:
頁面優(yōu)化和偽靜態(tài)的說明。
關(guān)于頁面優(yōu)化和偽靜態(tài)
1)版面優(yōu)化
2)偽靜態(tài)(重點涉及apache,smarty,正則)
詳細(xì)內(nèi)容:
一、版面優(yōu)化:
版面優(yōu)化其實主要涉及HTML,JS,CSS,XML之間的關(guān)系(XML相關(guān)在此不作描述).
1)一般來說,在資源共享的前提下,我們最基本的目的是讓搜索引擎所收錄(很多人被AJAX所迷惑,到處使用AJAX,但我的觀點是,只有在后臺或用戶操作部分才使用).
因此,首先我們應(yīng)該按搜索引擎的收錄準(zhǔn)則來設(shè)計(其實下面說的“偽靜態(tài)”還不是為了搜索引擎,由于相關(guān)文檔有好幾個PAGE,請自行搜索),主要是html的使用問題,如
2)然后解決加載速度和內(nèi)容純度問題:
主要是以下幾個原則:
1>不要為了版面美觀,把無謂的HTML加上去,建議把版面美觀的任務(wù)交給CSS,并認(rèn)真考慮CSS的可重用性,HTML只作為對信息內(nèi)容的描述(好像是XML的重點吧)。我在網(wǎng)上抽查了好一部分的站點,好的網(wǎng)站,html占總內(nèi)容的50%以下,但有的站點,文字內(nèi)容占總內(nèi)容不到20%,
2>把JS,CSS寫成文件.只要是利用了瀏覽器的CAHCHE,減少內(nèi)容下載
3>HTML標(biāo)簽應(yīng)該盡量減少嵌套,我見過夸張的一個站點,TABLE嵌套居然是11層..狂汗….
3)解決數(shù)據(jù)合理處理時間
這個涉及內(nèi)容比較多,主要是
二、偽靜態(tài)
這里主要描述apache,smarty的應(yīng)用,當(dāng)然,其實使用什么模板甚至不使用模板都沒什么關(guān)系的,只是筆者長年使用smarty,深濃感受到它的強大
該部分主要針對的是對系統(tǒng)有控制權(quán)和對apache、正則較為熟悉的用戶。
在這里,核心是強調(diào)正則的應(yīng)用,如果你不會正則表達式,那么你就只能停留一成不變的抄襲階段,甚至無法使用.而且正則在應(yīng)用上普遍(基本上什么語言都有)、頻繁和強大,筆者還是建議花點時間,學(xué)精一點,受用終生
對于搜索引擎,據(jù)我所知,關(guān)鍵是處理GET中的”?”、”&”.”php”,還有就是URL長度的問題就OK了,形式就看個人愛好了。
先說APACHE,關(guān)鍵是使用mod_rewrite,打開mod_rewrite模塊(在httpd.conf中,把LoadModule rewrite_module modules/mod_rewrite.so前面的“#”去除)
如果使用了vhost(),可以在vhost里面加入類似下面的代碼:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxx.com$
RewriteRule ^/([^\.\/]+)\.html$ /index.php?action=$1 [L]
解釋:
以上配置不一定放在vhost里,按你個人要求放得合適就行。
第一行,表示該vhost將要使用rewrite(URL重寫)
第二行,RewriteCond是用于如果后面條件符合(第一個參數(shù)滿足第二個參數(shù),其中第二個參數(shù)為正則表達式),則執(zhí)行下面的RewriteRule指令,其中%{xxxx}表示是apache的變量,%{HTTP_HOST}表示URL的主機(域名),其它變量請查看apache2手冊
第三行,實現(xiàn)url重寫(重頭戲),第一個參數(shù)為在瀏覽器中輸入的url,滿足該正則的uri才執(zhí)行重寫,第二個參數(shù)是重寫規(guī)則,即把滿足第一個參數(shù)的url 按照該規(guī)則轉(zhuǎn)換成你須要的url在這里筆者必須指出,重寫后的url如果包含”http://”,跳轉(zhuǎn)后的地址會顯示在瀏覽器的地址欄中。第三個參數(shù)是一些控制,如以上[L]表示該重寫是最后一條,后面的重寫規(guī)則不再被執(zhí)行。
smarty部分:
主要是處理輸出的頁面內(nèi)容,你使用apache的rewrite后,你頁面中的鏈接當(dāng)然使用了它的規(guī)則了,如:原來是 abc.php?action=doit就要改用類似abc/action-doit.html這樣的方式表示,當(dāng)然,你可以在做頁面時自己手動去改,但我覺得這是比較笨的方法.為什么不去使用ob_xxxxx()去控制呢?(ob_xxxx()系的函數(shù)使用請參考php手冊).在這里的介紹使用 smarty去代替,因為這樣會更加靈活
在smarty中,使用register_outputfilter()注冊一個處理方法即可,具體方法類似為:
//先定義好一個處理函數(shù)
function change_url($tpl_output, &$smarty)
{
$tpl_output=preg_replace(”/\/index.php?\?action=([^&]+)/i”,”/\\1.html”,$tpl_output);
return $tpl_output;
}
//該函數(shù)第一個參數(shù)是smarty的頁面內(nèi)容,第二個是smarty指針
//然后使用
$tpl->register_outputfilter(”change_url”);
register_outputfilter()方法是輸出過濾函數(shù),即交給 change_url($tpl_output, &$smarty)第一個參數(shù)是smarty處理后的頁面內(nèi)容
同類型的還有前過濾方法register_prefilter(),即把smarty模板交給第一個參數(shù),詳細(xì)使用方法請參考smarty手冊
1)版面優(yōu)化
2)偽靜態(tài)(重點涉及apache,smarty,正則)
詳細(xì)內(nèi)容:
一、版面優(yōu)化:
版面優(yōu)化其實主要涉及HTML,JS,CSS,XML之間的關(guān)系(XML相關(guān)在此不作描述).
1)一般來說,在資源共享的前提下,我們最基本的目的是讓搜索引擎所收錄(很多人被AJAX所迷惑,到處使用AJAX,但我的觀點是,只有在后臺或用戶操作部分才使用).
因此,首先我們應(yīng)該按搜索引擎的收錄準(zhǔn)則來設(shè)計(其實下面說的“偽靜態(tài)”還不是為了搜索引擎,由于相關(guān)文檔有好幾個PAGE,請自行搜索),主要是html的使用問題,如
2)然后解決加載速度和內(nèi)容純度問題:
主要是以下幾個原則:
1>不要為了版面美觀,把無謂的HTML加上去,建議把版面美觀的任務(wù)交給CSS,并認(rèn)真考慮CSS的可重用性,HTML只作為對信息內(nèi)容的描述(好像是XML的重點吧)。我在網(wǎng)上抽查了好一部分的站點,好的網(wǎng)站,html占總內(nèi)容的50%以下,但有的站點,文字內(nèi)容占總內(nèi)容不到20%,
2>把JS,CSS寫成文件.只要是利用了瀏覽器的CAHCHE,減少內(nèi)容下載
3>HTML標(biāo)簽應(yīng)該盡量減少嵌套,我見過夸張的一個站點,TABLE嵌套居然是11層..狂汗….
3)解決數(shù)據(jù)合理處理時間
這個涉及內(nèi)容比較多,主要是
二、偽靜態(tài)
這里主要描述apache,smarty的應(yīng)用,當(dāng)然,其實使用什么模板甚至不使用模板都沒什么關(guān)系的,只是筆者長年使用smarty,深濃感受到它的強大
該部分主要針對的是對系統(tǒng)有控制權(quán)和對apache、正則較為熟悉的用戶。
在這里,核心是強調(diào)正則的應(yīng)用,如果你不會正則表達式,那么你就只能停留一成不變的抄襲階段,甚至無法使用.而且正則在應(yīng)用上普遍(基本上什么語言都有)、頻繁和強大,筆者還是建議花點時間,學(xué)精一點,受用終生
對于搜索引擎,據(jù)我所知,關(guān)鍵是處理GET中的”?”、”&”.”php”,還有就是URL長度的問題就OK了,形式就看個人愛好了。
先說APACHE,關(guān)鍵是使用mod_rewrite,打開mod_rewrite模塊(在httpd.conf中,把LoadModule rewrite_module modules/mod_rewrite.so前面的“#”去除)
如果使用了vhost(),可以在vhost里面加入類似下面的代碼:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxx.com$
RewriteRule ^/([^\.\/]+)\.html$ /index.php?action=$1 [L]
解釋:
以上配置不一定放在vhost里,按你個人要求放得合適就行。
第一行,表示該vhost將要使用rewrite(URL重寫)
第二行,RewriteCond是用于如果后面條件符合(第一個參數(shù)滿足第二個參數(shù),其中第二個參數(shù)為正則表達式),則執(zhí)行下面的RewriteRule指令,其中%{xxxx}表示是apache的變量,%{HTTP_HOST}表示URL的主機(域名),其它變量請查看apache2手冊
第三行,實現(xiàn)url重寫(重頭戲),第一個參數(shù)為在瀏覽器中輸入的url,滿足該正則的uri才執(zhí)行重寫,第二個參數(shù)是重寫規(guī)則,即把滿足第一個參數(shù)的url 按照該規(guī)則轉(zhuǎn)換成你須要的url在這里筆者必須指出,重寫后的url如果包含”http://”,跳轉(zhuǎn)后的地址會顯示在瀏覽器的地址欄中。第三個參數(shù)是一些控制,如以上[L]表示該重寫是最后一條,后面的重寫規(guī)則不再被執(zhí)行。
smarty部分:
主要是處理輸出的頁面內(nèi)容,你使用apache的rewrite后,你頁面中的鏈接當(dāng)然使用了它的規(guī)則了,如:原來是 abc.php?action=doit就要改用類似abc/action-doit.html這樣的方式表示,當(dāng)然,你可以在做頁面時自己手動去改,但我覺得這是比較笨的方法.為什么不去使用ob_xxxxx()去控制呢?(ob_xxxx()系的函數(shù)使用請參考php手冊).在這里的介紹使用 smarty去代替,因為這樣會更加靈活
在smarty中,使用register_outputfilter()注冊一個處理方法即可,具體方法類似為:
//先定義好一個處理函數(shù)
function change_url($tpl_output, &$smarty)
{
$tpl_output=preg_replace(”/\/index.php?\?action=([^&]+)/i”,”/\\1.html”,$tpl_output);
return $tpl_output;
}
//該函數(shù)第一個參數(shù)是smarty的頁面內(nèi)容,第二個是smarty指針
//然后使用
$tpl->register_outputfilter(”change_url”);
register_outputfilter()方法是輸出過濾函數(shù),即交給 change_url($tpl_output, &$smarty)第一個參數(shù)是smarty處理后的頁面內(nèi)容
同類型的還有前過濾方法register_prefilter(),即把smarty模板交給第一個參數(shù),詳細(xì)使用方法請參考smarty手冊
相關(guān)文章
php中preg_replace正則替換用法分析【一次替換多個值】
這篇文章主要介紹了php中preg_replace正則替換用法,結(jié)合實例形式對比分析了preg_replace一次替換多個值的具體使用技巧,需要的朋友可以參考下2017-01-01php加密之discuz內(nèi)容經(jīng)典加密方式實例詳解
這篇文章主要介紹了php加密之discuz內(nèi)容經(jīng)典加密方式,結(jié)合具體實例形式詳細(xì)分析了discuz加密的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2017-02-02php讀取遠(yuǎn)程gzip壓縮網(wǎng)頁的方法
這篇文章主要介紹了php讀取遠(yuǎn)程gzip壓縮網(wǎng)頁的方法,當(dāng)站點使用gzip壓縮時,使用常規(guī)的遠(yuǎn)程獲取方法會得到亂碼結(jié)果,使用本文方法即可解決這個問題,需要的朋友可以參考下2014-12-12解析PHP中intval()等int轉(zhuǎn)換時的意外異常情況
本篇文章是對PHP中intval()等int轉(zhuǎn)換時的意外異常情況進行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06