瀏覽器與服務器的交互
瀏覽器的主要功能是將用戶選擇的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中查找這些域名,發送請求,重定向等等…
那么,一個頁面,究竟是如何從我們輸入一個網址到最后完整的呈現在我們面前的呢?還需要了解一下瀏覽器是如何渲染的:
瀏覽器的渲染
瀏覽器渲染引擎在獲取到內容后的基本流程:
1. 解析HTML
2. 構建DOM樹
3. DOM樹與CSS樣式進行附着構造呈現樹
4. 布局
5. 繪制
上述這個過程是逐步完成的,為了更好的用戶體驗,渲染引擎將會盡可能早的將內容呈現到屏幕上,並不會等到所有的html都解析完成之后再去構建和布局render樹。
它是解析完一部分內容就顯示一部分內容,同時,可能還在通過網絡下載其余內容。
來源:https://blog.csdn.net/jiangawait/article/details/58142406