關於頁面最佳化和偽靜態_PHP教程

來源:互聯網
上載者:User
關於頁面最佳化和偽靜態

1)版面最佳化
2)偽靜態(重點涉及apache,smarty,正則)

詳細內容:

一、版面最佳化:
版面最佳化其實主要涉及HTML,JS,CSS,XML之間的關係(XML相關在此不作描述).
1)一般來說,在資源共用的前提下,我們最基本的目的是讓搜尋引擎所收錄(很多人被AJAX所迷惑,到處使用AJAX,但我的觀點是,只有在後台或使用者操作部分才使用).
因此,首先我們應該按搜尋引擎的收錄準則來設計(其實下面說的“偽靜態”還不是為了搜尋引擎,由於相關文檔有好幾個PAGE,請自行搜尋),主要是html的使用問題,如

2)然後解決載入速度和內容純度問題:
主要是以下幾個原則:
1>不要為了版面美觀,把無謂的HTML加上去,建議把版面美觀的任務交給CSS,並認真考慮CSS的可重用性,HTML只作為對資訊內容的描述(好像是XML的重點吧)。我在網上抽查了好一部分的網站,好的網站,html佔總內容的50%以下,但有的網站,文字內容佔總內容不到20%,
2>把JS,CSS寫成檔案.只要是利用了瀏覽器的CAHCHE,減少內容下載
3>HTML標籤應該盡量減少嵌套,我見過誇張的一個網站,TABLE嵌套居然是11層..狂汗….

3)解決資料合理處理時間
這個涉及內容比較多,主要是

二、偽靜態
這裡主要描述apache,smarty的應用,當然,其實使用什麼模板甚至不使用模板都沒什麼關係的,只是筆者長年使用smarty,深濃感受到它的強大
該部分主要針對的是對系統有控制權和對apache、正則較為熟悉的使用者。

在這裡,核心是強調正則的應用,如果你不會Regex,那麼你就只能停留一成不變的抄襲階段,甚至無法使用.而且正則在應用上普遍(基本上什麼語言都有)、頻繁和強大,筆者還是建議花點時間,學精一點,受用終生
對於搜尋引擎,據我所知,關鍵是處理GET中的”?”、”&”.”php”,還有就是URL長度的問題就OK了,形式就看個人愛好了。
先說APACHE,關鍵是使用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是用於如果後麵條件符合(第一個參數滿足第二個參數,其中第二個參數為Regex),則執行下面的RewriteRule指令,其中%{xxxx}表示是apache的變數,%{HTTP_HOST}表示URL的主機(網域名稱),其它變數請查看apache2手冊
第三行,實現url重寫(重頭戲),第一個參數為在瀏覽器中輸入的url,滿足該正則的uri才執行重寫,第二個參數是重寫規則,即把滿足第一個參數的url 按照該規則轉換成你須要的url在這裡筆者必須指出,重寫後的url如果包含”http://”,跳轉後的地址會顯示在瀏覽器的地址欄中。第三個參數是一些控制,如以上[L]表示該重寫是最後一條,後面的重寫規則不再被執行。

smarty部分:
主要是處理輸出的頁面內容,你使用apache的rewrite後,你頁面中的連結當然使用了它的規則了,如:原來是 abc.php?action=doit就要改用類似abc/action-doit.html這樣的方式表示,當然,你可以在做頁面時自己手動去改,但我覺得這是比較笨的方法.為什麼不去使用ob_xxxxx()去控制呢?(ob_xxxx()系的函數使用請參考php手冊).在這裡的介紹使用 smarty去代替,因為這樣會更加靈活
在smarty中,使用register_outputfilter()註冊一個處理方法即可,具體方法類似為:
//先定義好一個處理函數
function change_url($tpl_output, &$smarty)
{
$tpl_output=preg_replace(”/\/index.php?\?action=([^&]+)/i”,”/\\1.html”,$tpl_output);
return $tpl_output;
}
//該函數第一個參數是smarty的頁面內容,第二個是smarty指標
//然後使用
$tpl->register_outputfilter(”change_url”);

register_outputfilter()方法是輸出過濾函數,即交給 change_url($tpl_output, &$smarty)第一個參數是smarty處理後的頁面內容
同類型的還有前過濾方法register_prefilter(),即把smarty模板交給第一個參數,詳細使用方法請參考smarty手冊

http://www.bkjia.com/PHPjc/320593.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/320593.htmlTechArticle關於頁面最佳化和偽靜態 1)版面最佳化 2)偽靜態(重點涉及apache,smarty,正則) 詳細內容: 一、版面最佳化: 版面最佳化其實主要涉及HTML,JS,CSS,XML之間的關...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.