入門 動態頁面,靜態頁面,偽靜態頁面的區別
我們經常會看到,在地址欄里有一些網址特別長,而且還帶有“?”,這樣的鏈接一般是動態鏈接,其所對應的頁面就是動態頁面。
在技術上,動態頁面具有這些特征:
1,動態頁面是以ASP、PHP、JSP、ASP.net、Perl、或CGI等編程語言制作的;
2,動態頁面實際上并不是獨立存在于服務器上的網頁文件,只有當用戶請求時服務器才返回一個完整的網頁;
3,動態頁面上的內容存在于數據庫中,根據用戶發出的不同請求,其提供個性化的網頁內容;
4,動態頁面內容不是存在于頁面上,而是在數據庫中,從而大大降低網站維護的工作量;
5,采用動態網頁技術的網站可以實現更多的功能,如用戶注冊、用戶登錄、在線調查、用戶管理、訂單管理等等;靜態頁面則無法實現這些功能。
SEO的角度,動態頁面有這些弊端:
1,由于動態頁面的生成是采用數據庫的內容,所以網頁內容主題的永恒性不能保證。這樣造成了搜索引擎的閱讀困難,即搜索引擎抓不住一個永恒的主題,因此不能輸入到搜索引擎中的緩存(cache)中。
2,動態網址里往往包含“?”和很多參數,這讓目前技術條件下的搜索引擎在判斷和識別造成了很大的困難。
3,動態鏈接,存在一個信任問題,用戶以及搜索引擎都無法確定這個頁面會一直存在。
搜索引擎對于靜態鏈接更友好,所以,把動態網址進行URL重寫優化使其靜態化,是一個非常重要的SEO技巧。SEO十萬個為什么是全站動態的,目前這么合理和簡潔規范的URL就是經過URL重寫(URL-rewrite)技術處理的。
動態頁面和靜態頁面的seo優缺點
網頁的url地址可以分為動態和靜態,動態頁面并非實際存在于服務器當中,根據用戶發出的請求提供相應的內容,對服務器運作來說壓力較小,靜態頁面的地址是真實存在的,路徑當中不含有?&%之類的變量符號,所以對搜索引擎來事更友好更容易得到信任,為了追求動態頁面和靜態頁面的優點又回避缺點產生了“偽靜態”,在動態頁面的基礎上通過url重寫技術把轉移參數插入到url地址中達到迷惑蜘蛛的作用。
那么看似百利而無一害的偽靜態頁面是否就是最好的呢?結合動態頁面和靜態頁面的優缺點對比看看。
動態頁面
在服務器端運行的程序組件和網頁都屬于動態網頁,根據用戶的要求返回頁面,交互性很好,但是存在著很大的安全隱患,動態網站頁面的信息必須從數據庫中讀取,每打開一個頁面造成一次讀取命令,如果人數過多會增加服務器的工作量,從而影響這個網站的運行速度,動態網站的變量鏈接很容易造成死循環,使蜘蛛深陷其中,所以對搜索引擎很不友好。
靜態頁面
靜態頁面實際存在于服務器內,無需經過編譯就能直接加載到用戶瀏覽器上顯示出來,中間省略的腳本計算和讀取數據庫提高了訪問的速度,缺點同樣并存與優點之中,由于靜態頁面存放在服務器中藥占據空間內存,可以想象如果某論壇有10萬帖,每個帖的大小100K,如果全部作為靜態頁面存在于服務器中就要占據10G的大小,不包括存儲計算中造成的空間浪費,所以相當消耗空間資源。
偽靜態頁面
那么偽靜態頁面是否就能結合動態頁面和靜態頁面的優點,既能解決搜索引擎友好的問題,又能解決靜態頁面空間資源消耗大的問題幾乎完美的存在,其實不然,瀏覽器訪問偽靜態頁面時是通過正則判斷,而這個分辨的過程由cpu完成,導致cpu使用率上升出現超負荷,影響網站的正常服務就是偽靜態的最大弊病。
由此可以看出每種形式都是有長有短的,怎么合理的使用各種形式完全取決于站長對網站規模的計劃和類型的定位。
偽靜態還有的2點好處:1)防止某些黑客惡意攻擊。有些大網站采用不同的技術開發不同功能的頁面。而把拓展名改掉,讓黑客無法確認此頁面用的技術是什么,從而就無從下手。 2) 方便訪問者使用。訪問者不是程序員,他們不明白什么是.jsp,.php.aspx,他們只知道URL。所以統一把拓展名拿掉,或者同意把拓展名換為html,htm,有利于用戶的使用。用戶可以知道現在在你網站的位置,如何通過輸入URL到某一頁面
針對seo優化動態網頁如何優化
動態生成的網頁:
對于那些動態生成網頁,我們這些實際的訪問者可以通過肉眼看到。但對于大多數搜索引擎的蜘蛛程序卻往往是不可見的,這也就是動態網頁很難被搜索引擎的SPIDER檢索的原因。因而,要想讓你的動態網頁能夠出現在搜索引擎的搜索結果中,只要保證你的網站內容對搜索引擎是可見的,即搜索引擎的Spider程序能夠看到你網站的內容就可以了.
所謂動態網頁一般指的是采用ASP,PHP,ColdFusion,CGI等程序動態生成的頁面,該網頁中的大部分內容來自與網站相連的數據庫。在網絡空間中并不存在這個頁面,只有接到用戶的訪問要求后才生成并傳輸到用戶的瀏覽器中。而且由于訪問者能夠實時得到他們想要的數據,動態網頁往往容易給人留下深刻的印象。此外,動態網頁還具有容易維護和更新的優點。例如,對于一個新產品或價格的調整。網站管理員只要對數據庫做一下簡單的改動就可以了,根本不需要去修改每個單獨的靜態頁面。
我們可以看出,從用戶角度來考慮,動態網頁確實非常棒。但如果在搜索引擎的角度來看,結論卻不同了。
動態網頁的問題所在:
問題就出在這些動態網頁在網絡空間中并不是實際存在的,只有當用戶在變量區中輸入一個值以后它們才會生成。而我們大家也都知道,搜索引擎的Spider再聰明,它也只是一個搜索程序,它們無法象真正的人那樣選擇變量并輸入數值。亦可將查詢編入主頁上的一個鏈接中,使得該鏈接成為一個預先定義的網站目錄的查詢。用戶可在一個搜索表格中鍵入查詢條件來查詢,通常動態腳本需要某些信息來返回頁面內容,最常見的如Cookie數據,SessionID或一個環境變量。但對搜索引擎的Spider程序來說,它們壓根不可能知道去使用你的搜索功能,或者該問什么問題。就是因為如此,Spider對網站的檢索往往會在一個動態站點前不得不止步。此外,在動態頁的URL中包含了問號(?)和百分號(%)。還有一些符號諸如&,%,+和$等在一個動態頁的URL中也經常能看到。這樣的URL被稱作“環境變量”(querystring)。不過大多數SPIDER都無法解讀符號“?”后的字符。很顯然,由于這個URL并不實際存在,所以它們一無所獲。因此,如果你的整個網站或網站上有大部分網頁都是采用動態來生成的,為了使SPIDER易于讀取你網站上的內容,你需要對網站做一定的修改。還有一些搜索引擎在對頁面進行檢索時往往也會拒絕對cgi-bin目錄下的靜態頁面(即被保存成靜態頁面的動態頁)URL進行檢索。
搜索引擎為何不讀取符號“?”后的內容:
搜索引擎的SPIDER不愿意讀取放在cgi-bin目錄下的網頁,或是URL中包含了符號“?”的字符。其原因就在于,如果在CGI中提供了“無窮”數量的URL,那么SPIDER往往就會因為對這些“無窮”網頁的檢索而被牢牢套住,陷入死循環。這就是所謂的蜘蛛陷阱(spidertraps)。數據庫程序對SPIDER亦有可能創建一個與此類似的情形。因而為避開可能的陷阱,Spider對于那些帶有符號“?”的URL中的“?”之后的字符一概不予讀取。 倘若Spider被你的服務器套住,不只是對Spider本身不妙,Spider對你網站頁面的重復訪問請求也會導致你的服務器系統徹底癱瘓。
動態鏈接的靜態化
動態鏈接的靜態化:
動態頁面的鏈接是動態產生的,在返回頁面內容之前,動態腳本需要一些信息,如cookie data、session id或字符串。動態頁面是基于數據庫驅動的,通過腳本語言動態產生的頁面。動態網站中有模板,內容一般存放于數據庫中。要瀏覽頁面時,模板調用數據庫中的內容,參數被添加到URL上, 這種復合型URL告訴了模板要裝載的具體內容。瀏覽者在動態網站中通過使用查詢字符串發現信息,這種查詢字符串被鍵入表單中或被預先編碼在主頁上的鏈接中。
蜘蛛不清楚如何使用查詢功能,若蜘蛛用沒有查詢字符串的不完整請求向服務器提交,服務器會要求信息完整地址,這是蜘蛛不能理解的,從而可能陷入了一種死循環中。搜索引擎難以處理動態網站,因不能提供產生頁面需要的信息,會陷入到動態頁面服務器中而不能自拔,蜘蛛和服務器陷入無限循環之中,會導致服務器癱瘓。因此,動態網頁內容對大多數搜索引擎蜘蛛是不可見的,大多數蜘蛛反感動態頁面,在識別出這種URL后,會敬而遠之。不會檢索它。因此需要把這些有價值的內容轉換成隨蜘蛛可見的形態。
這種復合型URLs 是搜索引擎難以檢索的,因搜索引擎不知道定義內容的參數。參數越多,越難以被檢索到。為此,需要克服這種不完整地址問題。有兩種解決方案:
搜索引擎友好的動態頁面,修改URLs,參數越少越好,最好把頁面靜態化。
偽靜態頁面生成方法:
Java代碼 收藏代碼
ProvideBlogListAction.java:
userName4URL = s.getUserName();//這3個分別是URL后面需要傳遞的參數
blogId4URL = s.getBlogId();
articleId4URL = s.getArticleId();
s.setArticleURL(com.trs.blog.util.UrlUtil.getArticleURL(userName4URL,blogId4URL,articleId4URL));
UrlUtil.java:
/**
* 獲得博客文章的URL
* @param userName 用戶名
* @param BlogId 博客id
* @param aid 文章id
* @return 文章的URL
*/
public static String getArticleURL(String userName, int blogId, int aid){
URLMap u = URLMap.valueOf(userName,blogId,aid);
return "http://localhost:8080/blog/a/"+u.toString()+".html";
}
URLMap.java:
public final static URLMap valueOf(String sUserName, int iParentId, int iId) {
URLMap map = new URLMap();
map.m_iVersion = DEFAULT_VERSION;
map.m_sUserName = sUserName;
map.m_iType = “1”;
map.m_iParentId = iParentId;
map.m_iId = iId;
map.m_iCheckSum = caculateCheckSum(sUserName.hashCode(), iParentId, iId);
return map;
}
private final static int caculateCheckSum(int hash, int pid, int aid) {
return (hash + (hash >> 13)) | (pid - (pid >> 12)) & (aid ^ (aid >> 11));
}
上面的代碼是公司的偽靜態頁面實現辦法,在文章列表中把文章的連接如/blog/articleInfo.do?userName=zy&&blogId=1&&articleId=1轉換成blog/a/0101002526B90C548A833416.html這種URL,這樣蜘蛛就可以進而爬進去看相應的內容了,因為文章列表中的每一篇文章都是不同的靜態URL。
靜態與偽靜態的比較:
第一、速度,對于速度而說,靜態頁面比偽靜態好,因為靜態頁面是實實在在存在于服務器上的頁面。在用戶向服務器發出請求時,可以直接直接調用。然而偽靜態,其實是一個動態頁面,只是用一個技術或手段,請動態頁面中的“?”等一些符號用蜘蛛可以很內容識別出來的字母給代替了。所以像這種靜態頁面,要向服務器發出請求時,還要多出一個功能就是轉化功能,如何同時請求過多,會加大服務器的負荷。
第二、容量,對于容量而言,因為靜態頁面是實實在在存在于服務器中,因此會占用一定的空間,如何文件過多,占用的空間就多。然而偽靜態就可以避免這一點,因為偽靜態是將動態的URL給轉換成靜態,實際在服務器上是不存在的。 第三、搜索引擎友好性。對于靜態URL頁面,實實在在存在于服務器上,當搜索引擎收錄之后,URL是不會改變的,哪有用戶訪問時,也不會出問題。然而如果是偽靜態頁面,服務器偽靜態組件不出問題,這個URL就沒有問題,如何偽靜態組件出問題了,哪么當搜索引擎收錄這個URL就會出錯,如果出現錯誤過多,會讓搜索引擎討厭你網站,所以在試用偽靜態頁面時,偽靜態組件,一定不要出錯。
如果您的問題還未解決可以聯系站長付費協助。

有問題可以加入技術QQ群一起交流學習
本站vip會員 請加入無憂模板網 VIP群(50604020) PS:加入時備注用戶名或昵稱
普通注冊會員或訪客 請加入無憂模板網 技術交流群(50604130)
客服微信號:15898888535
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若內容侵犯了原著者的合法權益,可聯系站長刪除。