用戶輸入階段
合成 URL:瀏覽區(qū)會(huì)判斷用戶輸入是合法 URL,比如用戶輸入的是搜索的關(guān)鍵詞,默認(rèn)的搜索引擎會(huì)合成新的,如果符合url規(guī)則會(huì)根據(jù)url協(xié)議,在這段內(nèi)容加上協(xié)議合成合法的url?
? ?
查找緩存
網(wǎng)絡(luò)進(jìn)程獲取到 URL,先去本地緩存中查找是否有緩存資源,如果有則攔截請(qǐng)求,直接將緩存資源返回給瀏覽器進(jìn)程;否則,進(jìn)入網(wǎng)絡(luò)請(qǐng)請(qǐng)求階段; ? ?
? ??
DNS 解析:
DNS 查找數(shù)據(jù)緩存服務(wù)中是否緩存過(guò)當(dāng)前域名信息,有則直接返回;否則,會(huì)進(jìn)行 DNS 解析返回域名對(duì)應(yīng)的 IP 和端口號(hào),如果沒(méi)有指定端口號(hào),http 默認(rèn) 80 端口,https 默認(rèn) 443。如果是 https 請(qǐng)求,還需要建立 TLS 連接;
? ??
建立 TCP 連接:
TCP 三次握手與服務(wù)器建立連接,然后進(jìn)行數(shù)據(jù)的傳輸;(三次握手開(kāi)噴)發(fā)送 HTTP 請(qǐng)求:
瀏覽器首先會(huì)向服務(wù)器發(fā)送請(qǐng)求行,它包含了請(qǐng)求方法、請(qǐng)求 URI 和 HTTP 協(xié)議的版本;另外還會(huì)發(fā)送請(qǐng)求頭,告訴服務(wù)器一些瀏覽器的相關(guān)信息,比如瀏覽器內(nèi)核,請(qǐng)求域名;服務(wù)器處理請(qǐng)求:
服務(wù)器首先返回響應(yīng)行,包括協(xié)議版本和狀態(tài)碼,比如狀態(tài)碼 200 表示繼續(xù)處理該請(qǐng)求;如果是 301,則表示重定向,服務(wù)器也會(huì)向?yàn)g覽器發(fā)送響應(yīng)頭,包含了一些信息;頁(yè)面渲染:
查看響應(yīng)頭的信息,做不同的處理,比如重定向,存儲(chǔ)cookie 看看content-type的值,根據(jù)不同的資源類型來(lái)用不同的解析方式
瀏覽器將獲取的HTML文檔解析成DOM樹(shù)。
處理CSS標(biāo)記,構(gòu)成層疊樣式表模型CSSOM(CSS Object Model)。
將DOM和CSSOM合并為渲染樹(shù)(rendering tree),代表一系列將被渲染的對(duì)象。
渲染樹(shù)的每個(gè)元素包含的內(nèi)容都是計(jì)算過(guò)的,它被稱之為布局layout。瀏覽器使用一種流式處理的方法,只需要一次繪制操作就可以布局所有的元素。
將渲染樹(shù)的各個(gè)節(jié)點(diǎn)繪制到屏幕上,這一步被稱為繪制painting。斷開(kāi) TCP 連接:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-457197.html
數(shù)據(jù)傳輸完成,正常情況下 TCP 將四次揮手?jǐn)嚅_(kāi)連接。但是如果瀏覽器或者服務(wù)器在HTTP頭部加上 Connection: keep-alive,TCP 就會(huì)一直保持連接。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457197.html
到了這里,關(guān)于面試:瀏覽器從輸入url到渲染頁(yè)面,發(fā)生了什么的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!