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


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

    詳細版

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

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

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

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

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

    6、進入部署好的后端應用,如PHPJavaJavaScriptPython 等,找到對應的請求處理;

    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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM