程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 關於頁面優化和偽靜態

關於頁面優化和偽靜態

編輯:PHP綜合
關於頁面優化和偽靜態

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、正則較為熟悉的用戶。

在這裡,核心是強調正則的應用,如果你不會正則表達式,那麼你就只能停留一成不變的抄襲階段,甚至無法使用.而且正則在應用上普遍(基本上什麼語言都有)、頻繁和強大,筆者還是建議花點時間,學精一點,受用終生
對於搜索引擎,據我所知,關鍵是處理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是用於如果後面條件符合(第一個參數滿足第二個參數,其中第二個參數為正則表達式),則執行下面的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手冊
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved