從打開網(wǎng)頁(yè)到顯示內(nèi)容,發(fā)生了啥

image.png

用戶打開瀏覽器輸入域名到顯示網(wǎng)頁(yè),都發(fā)生了什么。

DNS解析

域名轉(zhuǎn)換成IP地址的過程,稱之為DNS解析。
1.瀏覽器DNS記錄緩存。
2.hosts文件和操作系統(tǒng)緩存
3.如果上面2個(gè)DNS緩存都沒有記錄,則向域名解析服務(wù)器發(fā)送解析請(qǐng)求。
4.如果域名解析器都沒有,那就復(fù)雜了要遞歸+迭代的去根域服務(wù)器發(fā)出請(qǐng)求然后一步步查,具體我也不知道。

發(fā)起TCP請(qǐng)求

瀏覽器會(huì)選擇一個(gè)大于1024的本級(jí)端口向目標(biāo)IP的80端口發(fā)起TCP連接請(qǐng)求。經(jīng)過TCP3次握手流程,建立了TCP連接。

發(fā)起http請(qǐng)求

HTTP請(qǐng)求是在剛才建立的TCP請(qǐng)求上,按照HTTP協(xié)議標(biāo)準(zhǔn)發(fā)送一個(gè)網(wǎng)頁(yè)索要的請(qǐng)求。

負(fù)載均衡(可能有可能沒有)

根據(jù)分配的算法和規(guī)則,選擇一臺(tái)后端的web服務(wù)器,建立TCP連接,轉(zhuǎn)發(fā)瀏覽器發(fā)出的網(wǎng)頁(yè)請(qǐng)求。服務(wù)器收到請(qǐng)求,產(chǎn)生響應(yīng),發(fā)回給瀏覽器

瀏覽器渲染

瀏覽器根據(jù)頁(yè)面內(nèi)容,生成DOM tree。根據(jù)css內(nèi)容,生成css rule tree。調(diào)用JS引擎執(zhí)行js代碼
根據(jù)dom tree cssrule 生成render tree
根據(jù) render tree 渲染網(wǎng)頁(yè)
瀏覽器解析頁(yè)面內(nèi)容的時(shí)候,發(fā)現(xiàn)頁(yè)面引用了其他未加載的靜態(tài)文件。

靜態(tài)資源加載

什么是CDN?如果我在廣州訪問杭州的淘寶網(wǎng),跨省的通信必然造成延遲。如果淘寶網(wǎng)能在廣東建立一個(gè)服務(wù)器,靜態(tài)資源我可以直接從就近的廣東服務(wù)器獲取,必然能提高整個(gè)網(wǎng)站的打開速度,這就是CDN。CDN叫內(nèi)容分發(fā)網(wǎng)絡(luò),是依靠部署在各地的邊緣服務(wù)器,使用戶就近獲取所需內(nèi)容,降低網(wǎng)絡(luò)擁塞,提高用戶訪問響應(yīng)速度。

接下來的流程就是瀏覽器根據(jù)url加載該url下的圖片內(nèi)容。本質(zhì)上是瀏覽器重新開始第一部分的流程,所以這里不再重復(fù)闡述。區(qū)別只是負(fù)責(zé)均衡服務(wù)器后端的服務(wù)器不再是應(yīng)用服務(wù)器,而是提供靜態(tài)資源的服務(wù)器。

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

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

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