一個頁面從輸入 URL 到頁面加載顯示完成,這個過程中都發生了什麼?

詳細版

1、瀏覽器會開啓一個線程來處理這個請求,對URL 分析判斷如果是 http 協議就按照 Web 方式來處理;

2、調用瀏覽器內核中的對應方法,比如 WebView 中的 loadUrl 方法;

3、通過DNS解析獲取網址的IP地址,設置 UA 等信息發出第二個GET請求;

4、進行HTTP協議會話,客戶端發送報頭(請求報頭);

5、進入到web服務器上的 WebServer,如 Apache、Tomcat、Node.js 等服務器;

6、進入部署好的後端應用,如PHP、Java、JavaScript、Python 等,找到對應的請求處理;

7、處理結束回饋報頭,此處如果瀏覽器訪問過,緩存上有對應資源,會與服務器最後修改時間對比,一致則返回304;

8、瀏覽器開始下載html文檔(響應報頭,狀態碼200),同時使用緩存;

9、文檔樹建立,根據標記請求所需指定MIME類型的文件(比如css、js),同時設置了cookie;

10、頁面開始渲染DOM,JS根據DOM API操作DOM,執行事件綁定等,頁面顯示完成。



簡潔版:

瀏覽器根據請求的URL交給DNS域名解析,找到真實IP,向服務器發起請求

服務器交給後臺處理完成後返回數據,瀏覽器接收文件(HTML、JS、CSS、圖象等);

瀏覽器對加載到的資源(HTML、JS、CSS等)進行語法解析,建立相應的內部數據結構(如HTML的DOM);

載入解析到的資源文件,渲染頁面,完成。



其它:


1:當發送一個URL請求時,不管這個URL是Web頁面的URL還是Web頁面上每個資源的URL,瀏覽器都會開啓一個線程來處理這個請求,同時在遠程DNS服務器上啓動一個DNS查詢。這能使瀏覽器獲得請求對應的IP地址。

2: 瀏覽器與遠程Web服務器通過TCP三次握手協商來建立一個TCP/IP連接。該握手包括一個同步報文,一個同步-應答報文和一個應答報文,這三個報文在 瀏覽器和服務器之間傳遞。該握手首先由客戶端嘗試建立起通信,而後服務器應答並接受客戶端的請求,最後由客戶端發出該請求已經被接受的報文。

3:一旦TCP/IP連接建立,瀏覽器會通過該連接向遠程服務器發送HTTP的GET請求。遠程服務器找到資源並使用HTTP響應返回該資源,值爲200的HTTP響應狀態表示一個正確的響應。

4:此時,Web服務器提供資源服務,客戶端開始下載資源。請求返回後,便進入了我們關注的前端模塊。簡單來說,瀏覽器會解析HTML生成DOM Tree,其次會根據CSS生成CSSRule Tree,而javascript又可以根據DOMAPI操作DOM
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章