97免费在线观看视频 I 午夜夫妻视频 I 久久久久久网站 I 天堂网男人 I 欧美大波大乳人奶 I 丝袜 中出 制服 人妻 美腿 I 窝窝午夜理论片影院 I 日韩在线伦理电影 I 韩国特级毛片 I 亚洲欧美另类激情 I 在线成人日韩 I 麻豆视频免费看 I 黄色生活毛片 I 极品一线天小嫩嫩真紧 I 色久天堂 I 久久久久久黄色片 I 林智妍三级露全乳电影视频 I 大肉大捧一进一出好爽视频 I 空乘伦理hd I 少妇口述与子做过爱 I 成人免费影片 I 国产精品国内免费一区二区三区 I 日韩制服一区 I 青青草福利在线 I 日本在线观看不卡视频 I 婷婷六月综合亚洲 I 国产又粗又黄又硬 I 美女扒开屁股让男子桶爽 I 欧美性午夜视频观看 I 欧美狠狠插 I 亚洲福利在线观看视频 I 无码抽搐高潮喷水流白浆 I 亚洲欧美国产日韩色伦 I 你懂的视频网站在线观看 I www.蜜桃视频在线观看 I 日本无码人妻精品一区二区蜜桃 I 久久中文字幕人妻丝袜 I 碰草在线视频 I 日韩精品成人av网站

瀏覽器從輸入URL到渲染完頁面的整個過程是怎么樣的?

2020/11/2 10:31:37   閱讀:2888    發布者:2888

      

   瀏覽器的主要功能是將用戶選擇的web資源呈現出來,它從服務器請求資源,并將得到的資源(HTML,PDF,image等等)顯示在瀏覽器窗口。那么從用戶敲入URL到完整渲染出來,經歷了什么過程呢?也就是說整個瀏覽器的工作流程是怎樣的呢?

整個過程大致如下:


       1. 輸入URL,瀏覽器根據域名尋找IP地址
       2. 瀏覽器發送一個HTTP請求給服務器,如果服務器返回以301之類的重定向,瀏覽器根據相應頭中的location再次發送請求
       3. 服務器接受請求,處理請求生成html代碼,返回給瀏覽器,這時的html頁面代碼可能是經過壓縮的
       4. 瀏覽器接收服務器響應結果,如果有壓縮則首先進行解壓處理
       5. 瀏覽器開始顯示HTML 

       6. 瀏覽器發送請求,以獲取嵌入在HTML中的對象。在瀏覽器顯示HTML時,它會注意到需要獲取其他地址內容的標簽。


這時,瀏覽器會發送一個獲取請求來重新獲得這些文件——包括CSS/JS/圖片等資源,這些資源的地址都要經歷一個和HTML讀取類似的過程。所以瀏覽器會在DNS中查找這些域名,發送請求,重定向等等…

 那么,一個頁面,究竟是如何從我們輸入一個網址到最后完整的呈現在我們面前的呢?還需要了解一下瀏覽器是如何渲染的。
首先是用戶輸入url,瀏覽器通過DNS查詢要訪問頁面的IP,查詢到后,瀏覽器會替用戶去向這個IP地址發送請求拉取html文件,瀏覽器會派GUI線程去解析加載回來的html文件

html解析過程:01機器碼-》charter字符-》tokens令牌-》node節點-》dom樹


解析CSS,構建CSSOM
有了骨骼以后,接下來就是確定長相了,這是CSS要做的事情。和解析HTML類似,CSS解析各種樣式信息,生成網頁的“外觀”。但是有個問題,CSSA(class選擇器)說,我喜歡藍色,我家網頁的所有文字都要是藍色。CSSB(id選擇器)就不樂意了,憑啥啊,我喜歡紅色,我家的標題必須是紅色。由于id選擇器是親生的,那就標題是紅色的吧,于是不同選擇器就有了不同的權重。最后生成CSSOM

因為瀏覽器解析文檔,如果遇到請求外部資源時,如圖像,iconfont,JS等。瀏覽器將下載該資源。請求過程是異步的,并不會影響HTML文檔進行加載,當遇到 <script>標簽的時候,會立即解析腳本,停止解析文檔(因為JS可以操作DOM和CSS,可能會改動DOM和CSS,所以繼續解析會造成浪費)。如果腳本是外部的,會等待腳本下載完畢,再繼續解析文檔。所以常見的做法是將js放到頁腳部分。

      

構建Render Tree(呈現樹)


骨骼和長相都有了,那就組合到一起唄,DOM和CSSOM根據一定的規則組合起來生成了Render Tree。

 布局(Layout)


創建渲染樹后,接下來正式開工,確定各個元素的位置,包括元素在視圖中的位置以及自身的大小,將其安置在瀏覽器的正確位置。


繪制(Painting)


這個階段,瀏覽器會遍歷呈現樹,并調用呈現器的“paint”方法,將前期所有的工作結合到一起,將網頁的內容呈現出來。如果網頁只是HTML+CSS,那么可能就到此結束了,but還有神奇的JS呢,請看回流和重繪。

回流(Reflow)和重繪(Repaint)


如果這個時候我寫了用JS操作了DOM,將網頁的所有元素設置float:left,那么問題來了,上面兩步的工作白干了,推翻從新再來。如果將所有元素的顏色改變了(并沒有改變結構),比如color:red,還好還好,上面一步的工作白干,推翻重來。可以想象一下,你辛辛苦苦加班一個月終于完成工作,產品經理來了一句:“好像要改一下需求…”
頁面在首次加載時必然會經歷reflow和repaint。reflow和repaint過程是非常消耗性能的,尤其是在移動設備上,它會破壞用戶體驗,有時會造成頁面卡頓。所以我們應該盡可能少的減少reflow和repaint。

所以,盡可能少操作DOM,提升網頁的性能。

總結一下:


       1. 解析HTML
       2. 構建DOM樹
       3. DOM樹與CSS樣式進行附著構造呈現樹(render樹)
       4. 布局
       5. 繪制
      上述這個過程是逐步完成的,為了更好的用戶體驗,渲染引擎將會盡可能早的將內容呈現到屏幕上,并不會等到所有的html都解析完成之后再去構建和布局render樹。它是解析完一部分內容就顯示一部分內容,同時,可能還在通過網絡下載其余內容。
主站蜘蛛池模板: 九九九九久久久久 | 好吊色欧美一区二区三区四区 | 亚洲v视频 | 亚洲插插 | 国产精品亚洲lv粉色 | 大地资源中文在线观看官网第二页 | 日韩不卡二区 | 福利片在线播放 | 555www成人网| 国产国产国产国产系列 | 动漫精品中文无码通动漫 | 亚洲精品美女网站 | 亚洲成在人线aⅴ免费毛片 国色天香婷婷综合网 | 国产视频一区二区在线观看 | 99精品国产免费 | 狠狠亚洲婷婷综合色香五月 | 日本一区二区在线不卡 | av无码一区二区大桥未久 | 欧美男女激情 | 中文国语毛片高清视频 | 欧美最猛黑人xxxxx猛交 | 天天躁夜夜躁狠狠躁2021牛牛 | 午夜啪啪福利 | 日本中文字幕免费在线观看 | 97se狠狠狠狼鲁亚洲综合网 | 亚洲精品91| 女性爽爽影院免费观看 | 免费a级毛片视频 | 国产精品theporn动漫 | 制服丨自拍丨欧美丨动漫丨 | 最新中文字幕av专区 | 亚洲2020天天堂在线观看 | 国产亚洲人成a在线v网站 | 国产一区二区三区av网站 | 久久久久久亚洲精品中文字幕 | 伊在人亚洲香蕉精品区麻豆 | 久久无码中文字幕免费影院 | 偷看农村女人做爰毛片色 | 国内精品一区二区三区在线观看 | 香港日本韩国三级网站 | 欧洲成人综合 | 人妻丰满熟妇av无码片 | 美色综合 | 做爰xxxⅹ高潮69网站 | 久久国产精品老女人 | 草逼导航 | 老司机午夜精品视频资源 | 国产线精品视频在线观看网 | 91国在线| 看黄色一级 | 国产精品高清一区二区不卡片 | 青青青青久久精品国产 | 六月丁香亚洲综合在线视频 | 久久精品国产99久久久小说 | 日本网站免费观看 | 亚洲,国产成人av | 伊人伊网 | 午夜时刻免费入口 | 激情网综合 | 欧美一区二区三区婷婷月色 | 日韩在线视频导航 | 亚洲精品国产高清在线观看 | 欧美性色大片在线观看 | 日韩av大片在线观看 | 夜夜摸,狠狠添,日日添,高潮出水 | 69国产精品久久久久久人妻 | 免费无码h肉动漫在线观看 中日韩无砖码一线二线 | 亚洲 欧美 激情 另类 | 亚洲中字在线 | 午夜视频在线观看视频 | 日韩最新在线 | 国产精品日韩精品欧美精品 | 99久久国语露脸精品国产 | 国产大学生呻吟对白精彩在线 | 日韩视频无码中字免费观 | 亚洲一区二区三区中文字幂 | 亚洲中文久久精品无码1 | 亚洲蜜臀av国产aⅴ综合小说 | 高清乱码男女免费观看 | 国产精品久久无码一区 | 天天骑天天干 | 亚洲日本欧美在线 | 爱情岛论坛一区二区 | 成人精品二区 | 国产亚洲第一区 | 久久国产精品精品国产 | 欧美日日夜夜 | 自拍偷拍亚洲欧美 | 印度人乱一性一乱一交一视频 | 日韩国产区| 猫咪av.com | 男人把女人桶到爽免费应用 | 国产精品久久久久久爽爽爽 | 黄色毛片一级片 | 天堂国产永久综合人亚洲欧美 | 深爱激情综合 | 夜夜躁狠狠躁日日躁2002讲述 | 日本一区高清视频 | 日日碰狠狠躁久久躁婷婷 |