1. 程式人生 > >靜態網頁/動態網頁/偽靜態網頁/動態HTML

靜態網頁/動態網頁/偽靜態網頁/動態HTML

程式是否在伺服器端執行,這個是判斷網頁屬不屬於動態網頁的重要標誌。動態的是需要伺服器解釋的,靜態的放到什麼地方都能執行。

在伺服器端執行的程式、網頁、元件,屬於動態網頁,它們會隨不同客戶、不同時間,返回不同的網頁,例如ASP、PHP、JSP、ASP.net、CGI等。

運行於客戶端的程式、網頁、外掛、元件,屬於靜態網頁,例如html頁、Flash、JavaScript、VBScript等等,它們是永遠不變的。

靜態網頁和動態網頁各有特點,網站採用動態網頁還是靜態網頁主要取決於網站的功能需求和網站內容的多少,如果網站功能比較簡單,內容更新量不是很大,採用純靜態網頁的方式會更簡單,反之一般要採用動態網頁技術來實現。

一、靜態網頁

靜態頁面,是指網頁中只有HTML標記。靜態網頁一經制成,內容就不會再變化,不管何人何時訪問,顯示的內容都是一樣的。如果要修改網頁的內容,就必須修改其原始碼,然後重新上傳到伺服器上。

對於靜態網頁,使用者可以直接雙擊開啟,看到的效果與訪問伺服器是相同的,即伺服器參加與否對頁面的內容是不會有影響的。這是因為在使用者訪問該網頁之前,網頁的內容就已經確定,無論使用者何時、以怎樣的方式訪問,網頁的內容都不會再改變。

靜態網頁每個網頁都有一個固定的URL,靜態網頁的網址形式通常為:www.example.com/eg/eg.htm,網頁URL以.htm、.html、.shtml等常見形式為字尾,而不含有“?”。

網頁內容一經發布到網站伺服器上,無論是否有使用者訪問,每個靜態網頁的內容都是儲存在網站伺服器上的,也就是說,靜態網頁是實實在在儲存在伺服器上的檔案,每個網頁都是一個獨立的檔案

在靜態網頁上,也可以出現各種動態的效果,如.GIF格式的動畫、FLASH、滾動字母等,儘管在這種網頁上使用這些物件後可以使網頁動感十足,但是,這種網頁不包含在伺服器端執行的任何指令碼,網頁上的每一行程式碼都是由網頁設計人員預先編寫好後,放置到Web伺服器上的,在傳送到客戶端的瀏覽器上後不再發生任何變化。所以說,這些“動態效果”只是視覺上的,與常說的動態網頁是不同的概念。

在靜態Web程式中,客戶端使用Web瀏覽器(IE、FireFox等)經過網路(Network)連線到伺服器上,使用HTTP協議發起一個請求(Request),告訴伺服器我現在需要得到哪個頁面,所有的請求交給Web伺服器,之後WEB伺服器根據使用者的需要,從檔案系統(存放了所有靜態頁面的磁碟)取出內容。之後通過Web伺服器返回給客戶端,客戶端接收到內容之後經過瀏覽器渲染解析,得到顯示的效果。

為了讓靜態web頁面顯示更加好看,使用javascript/VBScript/ajax(AJAX全稱“Asynchronous Javascript And XML”,即非同步JavaScript和XML,是指一種建立互動式網頁應用的網頁開發技術。)但是這些特效都是在客戶端上藉助於瀏覽器展現給使用者的,所以在伺服器上本身並沒有任何的變化。

靜態網頁沒有資料庫的支援,在網站製作和維護方面工作量較大,因此當網站資訊量很大時完全依靠靜態網頁製作方式比較困難。

由於現在的web頁面中,大量使用JS,導致瀏覽器開啟頁面,就會佔用大量的記憶體,服務端的壓力是減輕了,但壓力轉移到了客戶端。

靜態頁面的工作機制:

1.使用HTML編寫靜態頁面,釋出到WEB伺服器端;

2.客戶端通過瀏覽器請求該靜態頁面;

3.Web伺服器根據請求定位該靜態頁面;

4.該靜態頁面以HTML流的形式返回客戶端;

5.客戶端瀏覽器解釋HTML流,並顯示為WEB頁面。

優點:

相比動態網頁,靜態網頁速度最快。不僅僅是載入速度最快,而且不需要從資料庫裡面提取資料,速度快的同時,也不會對伺服器產生壓力。

靜態網頁的內容相對穩定,因此容易被搜尋引擎檢索。

缺點:

由於資料都是儲存在HTML裡面,所以導致檔案非常大。並且最嚴重的問題是,更改原始碼必須全部更改,而不能改一個地方,全站靜態頁面就自動更改了。如果是大型網站有比較多的資料,那會佔用大量的伺服器空間,每次新增內容都會生存新的HTML頁面。如果不是專業人士維護比較麻煩。

二、動態網頁

動態頁面是指,網頁中不僅僅包含HTML程式碼,還含有程式程式碼,可以根據客戶端輸入不同內容來顯示不同的結果。動態網頁相對複雜,不能直接雙擊開啟。


動態WEB中,程式依然使用客戶端和服務端,客戶端依然使用瀏覽器(IE、FireFox等),通過網路(Network)連線到伺服器上,使用HTTP協議發起請求(Request),現在的所有請求都先經過一個WEB Server來處理。

如果客戶端請求的是靜態資源(*.htm或者是*.htm),則將請求直接轉交給WEB伺服器,之後WEB伺服器從檔案系統中取出內容,傳送回客戶端瀏覽器進行解析執行。

如果客戶端請求的是動態資源(*.jsp、*.asp/*.aspx、*.php),則先將請求轉交給WEB Container(WEB容器),在WEB Container中連線資料庫,從資料庫中取出資料等一系列操作後動態拼湊頁面的展示內容,拼湊頁面的展示內容後,把所有的展示內容交給WEB伺服器,之後通過WEB伺服器將內容傳送回客戶端瀏覽器進行解析執行。

動態網頁以資料庫技術為基礎(靜態網頁以HTML為基礎),可以大大降低網站維護的工作量。

採用動態網頁技術的網站可以實現更多的功能,如使用者註冊、使用者登入、線上調查、使用者管理、訂單管理等等。

動態網頁實際上並不是獨立存在於伺服器上的網頁檔案,只有當用戶請求時伺服器才返回一個完整的網頁。

動態網頁中的"?"對搜尋引擎檢索存在一定的問題,搜尋引擎一般不可能從一個網站的資料庫中訪問全部網頁,或者出於技術方面的考慮,搜尋蜘蛛不去抓取網址中"?"後面的內容,因此採用動態網頁的網站在進行搜尋引擎推廣時需要做一定的技術處理才能適應搜尋引擎的要求。

動態頁面的工作機制:

1.使用動態WEB開發技術編寫WEB應用程式,即動態頁面,併發布到WEB伺服器端;

2.客戶端通過瀏覽器請求該動態頁面;

3.WEB伺服器定位該WEB應用程式;

4.WEB伺服器根據客戶端的請求,對WEB應用程式進行編譯或解釋,並生成HTML流;

5.將生成的HTML以流的形式返回給客戶端;

6.客戶端瀏覽器解釋HTML流,並顯示為WEB頁面。


再進一步深入分析動態web的訪問過程:

瀏覽器訪問web時,看似是直接訪問的jsp頁面,其實是,最先到達的地方是伺服器,伺服器建立好req和resp物件後再給jsp頁面使用。在jsp中完成設定字符集和取得表單引數後再呼叫servlet,完成業務處理。然後返回到jsp,jsp就會生成相應的html頁面。該頁面會返回到伺服器,再由伺服器,通過response物件返回給客戶端。


優點:

空間使用量非常小,一般幾萬條資料的網站,使用動態頁面,可能只有幾M的檔案大小,而使用靜態頁面少則十幾M,多則幾十M。因為資料是從資料庫裡面呼叫而來,所以如果要更改某些數值,直接更改資料庫,那麼所有的動態頁面,就會自動更新了。這一點相比靜態頁面好處就大很多了。

缺點:

使用者訪問速度較慢,為什麼會訪問動態頁面較慢呢。這個問題我們就必須從動態頁面的訪問機制說起了,其實我們的伺服器上面有一個解釋引擎,當用戶訪問的時候,這個解釋引擎就會把動態頁面翻譯為靜態頁面,這樣大家就能夠在瀏覽器裡面檢視原始碼了。而這個原始碼就是解釋引擎翻譯以後的原始碼。除訪問速度較慢以外,動態頁面的資料是從資料庫裡面呼叫過來的,如果訪問人數非常多,資料庫的壓力就會非常大的,不過現在動態程式都是使用了快取技術。但是總體來講,動態頁面對於伺服器的壓力比較大一點。同時動態頁面的網站一般對伺服器高求要比較高一些,同時訪問的人越多也會造成伺服器壓力越大。

三、總結

  • 所謂"靜態"指的是網頁內容"固定不變",當瀏覽者通過網際網路的HTTP協議向Web伺服器請求替換網頁內容時,伺服器僅僅是將原來已經設計好的靜態HTML文件傳送給使用者的流量器,其頁面的內容使用僅僅是標準的HTML程式碼,靜態網頁檔案通常以htm、html等為字尾名。
  • 所謂"動態",並不是指在網頁中放幾個帶動畫的GIF或者SWF圖片和動畫,而是指使用者在瀏覽此網頁時,可以根據本身的需求在網頁中進行操作,而網頁根據使用者的輸入,能夠產生相應的結果來響應使用者,那樣的網頁才叫動態網頁,動態網頁檔案通常以.asp,.php等為字尾。

靜態網頁是網站建設的基礎,靜態網頁和動態網頁之間也並不矛盾,為了網站適應搜尋引擎檢索的需要,即使採用動態網站技術,也可以將網頁內容轉化為靜態網頁釋出。

四、偽靜態頁面

偽靜態頁面定義:“假”靜態頁面,實質上是動態頁面。

偽靜態是相對真實靜態來講的。通常我們為了增強搜尋引擎的友好面。都將文章內容生成靜態頁面。但是有的朋友為了實時的顯示一些資訊。或者還想運用動態指令碼解決一些問題。不能用靜態的方式來展示網站內容。但是這就損失了對搜尋引擎的友好面。怎麼樣在兩者之間找個中間方法呢,這就產生了偽靜態技術。就是展示出來的是以.html一類的靜態頁面形式,但其實是用ASP一類的動態指令碼來處理的。

優點:

相比靜態頁面而言,並沒有速度上的明顯提升,因為是“假”靜態頁面,其實還是一個動態頁面,也是同樣需要翻譯為靜態頁面的。最大的好處就是讓搜尋引擎(Search Engine)把自己的網頁當做靜態頁面來處理。

缺點:

顧名思義,“偽靜態”就是“假靜態”,搜尋引擎不會把他當做靜態頁面來處理,這只是我們靠經驗考邏輯去分析的,並不一定準確。或許搜尋引擎直接把它認為是動態頁面。

偽靜態與靜態頁面的區別:

從URL結構以及頁面名稱看,偽靜態和靜態頁面是一樣的。偽靜態的頁面字尾可以是html、htm 或者是目錄格式偽靜態只是改變了URL的表現形式,實際上還是動態頁面靜態頁面可以節省伺服器資源,而偽靜態嚴格說是增加伺服器資源消耗的總結。在SEO方面,偽靜態和靜態頁面的功能是相同的;但是偽靜態本質上還是動態頁面,所以消耗資源是和動態頁面一樣的,而且因為Rewrite伺服器還需要消耗額外的資源。

五、動態HTML

我們把含有動態特效的頁面叫做DHTMLDynamic HTML的縮寫,又叫動態HTML),它是近幾年來網路發展程序中出現的一種特別技術引用概念,主要是客戶端指令碼語言、CSSCascading StyleSheets層疊樣式表)和文件物件模型DOMDocument ObjectModules)三種技術的綜合應用。動態HTML能獨立在客戶端(瀏覽者自己的計算機上)處理頁面元素,改變其版面、內容和位置,並把結果不斷提供給網頁瀏覽者,這些操作都是在客戶端完成的,不需要向伺服器請求讓伺服器來處理。這意味著動態HTMLWeb頁面裡面含有程式,會對使用者的操作有響應,使其產生動態效果,從而使網頁表達能力更加的豐富,即動態HTML能自動變化。

動態HTML與靜態網頁、動態網頁的區別:

靜態網頁上面沒有可動的網頁元素;動態HTML是網頁元素形式上的動,指對我們人為的操作有一定的反應;而動態網頁是網頁元素內容上的動,它可以根據我們訪問者不同請求,生成相應的HTML並傳輸到使用者的瀏覽器中。

參考來源:

http://blog.sina.com.cn/s/blog_a56b49460101gagg.html