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

詳細版:

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

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

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

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

5、進入到web服務器上的 Web Server,如 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到頁面加載顯示完成,這個過程中都發生了什麼

簡潔版:

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

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

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

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


分享到:


相關文章: