從輸入URL到頁面展示,這中間發(fā)生了什么?

1,用戶輸入url并回車
2,瀏覽器進程檢查url,組裝協(xié)議,構(gòu)成完整的url
3,瀏覽器進程通過進程間通信(IPC)把url請求發(fā)送給網(wǎng)絡進程
4,網(wǎng)絡進程接收到url請求后檢查本地緩存是否緩存了該請求資源,如果有則將該資源返回給瀏覽器進程
5,如果沒有,網(wǎng)絡進程向web服務器發(fā)起http請求(網(wǎng)絡請求),請求流程如下:
5.1 進行DNS解析,獲取服務器ip地址,端口(端口是通過dns解析獲取的嗎?這里有個疑問)
5.2 利用ip地址和服務器建立tcp連接
5.3 構(gòu)建請求頭信息
5.4 發(fā)送請求頭信息
5.5 服務器響應后,網(wǎng)絡進程接收響應頭和響應信息,并解析響應內(nèi)容
6,網(wǎng)絡進程解析響應流程;
6.1 檢查狀態(tài)碼,如果是301/302,則需要重定向,從Location自動中讀取地址,重新進行第4步
(301/302跳轉(zhuǎn)也會讀取本地緩存嗎?這里有個疑問),如果是200,則繼續(xù)處理請求。
6.2 200響應處理:
檢查響應類型Content-Type,如果是字節(jié)流類型,則將該請求提交給下載管理器,該導航流程結(jié)束,不再進行
后續(xù)的渲染,如果是html則通知瀏覽器進程準備渲染進程準備進行渲染。
7,準備渲染進程
7.1 瀏覽器進程檢查當前url是否和之前打開的渲染進程根域名是否相同,如果相同,則復用原來的進程,如果不同,則開啟新的渲染進程
8. 傳輸數(shù)據(jù)、更新狀態(tài)
8.1 渲染進程準備好后,瀏覽器向渲染進程發(fā)起“提交文檔”的消息,渲染進程接收到消息和網(wǎng)絡進程建立傳輸數(shù)據(jù)的“管道”
8.2 渲染進程接收完數(shù)據(jù)后,向瀏覽器發(fā)送“確認提交”
8.3 瀏覽器進程接收到確認消息后更新瀏覽器界面狀態(tài):安全、地址欄url、前進后退的歷史狀態(tài)、更新web頁面。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容