瀏覽器---WEB開發基礎之三

    經過HTTP協議的介紹,打開網頁必須創建TCP鏈接,而後經過HTTP協議進行交互,所以,瀏覽器訪問網址,第一件事就是創建TCP鏈接,可是TCP鏈接是基於IP的,而咱們輸入的倒是網址,因此,實際上第一件事,應該是經過DNS去查找網址(也就是域名)對應的主機的IP,而後纔是三次握手創建TCP鏈接(此處知識詳見《計算機網絡基礎》),而後瀏覽器向服務器發送: 
css

GET HTTP://www.baidu.com HTTP/1.1 
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...] 
User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...] 
Accept-Encoding: gzip, deflate 
Connection: Keep-Alive 
Host: www.baidu.com 
Cookie: BAIDUID=[...]:FG=1; H_PS_PSSID=[...]

    是的,這就是發送求情報文,只是這些事情都是由瀏覽器作的!此處報文的解釋,請詳細參考《HTTP權威指南》。 
    而後由服務器處理(此處省略詳細細節,後面服務端節講解),並返回響應報文,報文格式再也不詳述,參考對應的書籍或標準,可是返回的主體內容倒是值得分析的。網頁是由HTML、css、js、圖片、視頻、音頻、flash等組成的,所以,服務器返回的主體內容,若是Content-Type= text/html;則,首先包含了HTML、css和js,瀏覽器會解析和渲染這些內容,而外聯的內容如css文件、js文件、圖片文件等,是在另外的請求中去獲取和下載的,若是使用火狐瀏覽器並安裝了firebug,打開能夠看見以下的截圖: 
    由上圖能夠知道,實際上訪問www.baidu.com發送了10次請求,請求頁面、gif、png、js等,此過程是解析出這些外部資源以後再次請求得到的。經過瀏覽器把最後的結果渲染並呈現給用戶! html

    OK,那麼瀏覽器拿到響應報文的主體,究竟是如何渲染出最終的網頁效果的呢?要想知道如何渲染,就得知道瀏覽器裏面有些什麼: 
    瀏覽器通常是有如下幾個組成,瀏覽器內核 (排版引擎/渲染引擎)+JavaScript引擎+其餘功能具體市面上有哪些瀏覽器內核,有哪些JavaScript引擎,請參考科普貼:http://www.iplaysoft.com/browsers-engine.html 
    具體到瀏覽器的下載和渲染順序,網上有一些介紹以下: 
一、IE下載的順序是從上到下,渲染的順序也是從上到下,下載和渲染是同時進行的。 
二、在渲染到頁面的某一部分時,其上面的全部部分都已經下載完成(並非說全部相關聯的元素都已經下載完)。 
三、若是遇到語義解釋性的標籤嵌入文件(JS腳本,CSS 下載過程會啓用單獨鏈接進行下載,而且在下載後進行解析,解析過程當中,中止頁面全部往下元素的下載。 
五、樣式表在下載完成後,將和之前下載的全部樣式表一塊兒進行解析,解析完成後,將對此前全部元素(含之前已經渲染的)從新進行渲染。 
六、JS、CSS中若有重定義,後定義函數將覆蓋前定義函數。 
    Firefox處理下載和渲染順序大致相同,只是在細微之處有些差異,例如:iframe的渲染。
    那麼爲何要講解瀏覽器組成部分、渲染順序、HTTP協議呢?固然是爲了獲得更好的性能(如網站響應時間短,頁面渲染速度快等)和用戶體驗! 
    對於前端而言(除了網絡部分外),其優化策略,能夠參考《高性能網站建設指南》和《高性能網站建設進階指南》等。同時附上兩篇博文: 
http://www.ipmtea.net/css/201110/28_759.html 
http://www.cnblogs.com/shishm/archive/2012/03/16/2400718.html 
    其實具體的優化,真的是具體狀況具體分析,同時也須要和服務端配合,特別是瞭解操做系統、瀏覽器等的一些隱藏的限制!如對單個IP,最多隻能有5個鏈接等。
前端

相關文章
相關標籤/搜索