想要知道這個問題,我們還需要先了解一些概念沥潭。
什么是url?
URL: URL是Uniform Resource Location的縮寫嬉挡,譯為“統(tǒng)一資源定位符”钝鸽。通俗地說,URL是Internet上用來描述信息資源的字符串庞钢,主要用在各種WWW客戶程序和服務(wù)器程序上拔恰,特別是著名的Mosaic。采用URL可以用一種統(tǒng)一的格式來描述各種信息資源焊夸,包括文件仁连、服務(wù)器的地址和目錄等。
什么是IP?
IP:就像每個電話用戶有一個全世界惟一的電話號碼一樣饭冬,Internet中的每一臺計算機也有單一的地址使鹅。為了使信息能夠在Internet上準(zhǔn)確快捷地傳送到目的地,連接到Internet上的每臺計算機必須擁有一個惟一的地址昌抠。
什么是DNS患朱?
DNS 是域名系統(tǒng) (Domain Name System) 的縮寫,該系統(tǒng)用于命名組織到域?qū)哟谓Y(jié)構(gòu)中的計算機和網(wǎng)絡(luò)服務(wù)炊苫。DNS 命名用于 Internet 等 TCP/IP 網(wǎng)絡(luò)中裁厅,通過用戶友好的名稱查找計算機和服務(wù)。當(dāng)用戶在應(yīng)用程序中輸入 DNS 名稱時侨艾,DNS 服務(wù)可以將此名稱解析為與之相關(guān)的其他信息执虹,如 IP 地址。
了解了這些我們就開始解讀一下從url的輸入到網(wǎng)頁最終的輸入發(fā)生了什么唠梨。
1. 在瀏覽器中輸入網(wǎng)址
2. 瀏覽器開始進行域名解析袋励。
你在瀏覽器中輸入網(wǎng)址瀏覽器并不知道你要做什么,或者你要到那里去当叭。于是它需要對這個域名進行解析茬故。所謂的解析域名就是查找到域名對應(yīng)的ip地址。
解析流程:
- 瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間
- 系統(tǒng)緩存 - 從 Hosts 文件查找是否有該域名和對應(yīng) IP
- 路由器緩存 – 一般路由器也會緩存域名信息
- ISP DNS 緩存 – 去到互聯(lián)網(wǎng)服務(wù)提供商的DNS上查找IP
- 如果都沒有找到蚁鳖,則向根域名服務(wù)器查找域名對應(yīng) IP磺芭,根域名服務(wù)器把請求轉(zhuǎn)發(fā)到下一級,直到找到 IP
3.服務(wù)器處理
服務(wù)器是一臺安轉(zhuǎn)服務(wù)器系統(tǒng)的計算機醉箕,常用的服務(wù)器系統(tǒng)如:Linux钾腺、windows server 2012
服務(wù)器里安裝回應(yīng)請求的應(yīng)用是:Web sever
web server 擔(dān)任管控的角色,對于不同用戶發(fā)送的請求讥裤,會結(jié)合配置文件垮庐,把不同請求委托給服務(wù)器上處理對應(yīng)請求的程序進行處理(例如CGI腳本,JSP腳本坞琴,servlets,ASP腳本逗抑,服務(wù)器端JavaScript剧辐,或者一些其它的服務(wù)器端技術(shù)等),然后返回后臺程序處理產(chǎn)生的結(jié)果作為響應(yīng)邮府。
4.網(wǎng)站處理流程
5.瀏覽器處理
通過后臺處理返回的html字符串結(jié)果會被瀏覽器讀取解析荧关,對應(yīng)就是html頁面加載、解析褂傀、渲染的工作忍啤。
- 加載
瀏覽器對一個html頁面的加載順序是從上而下的,并在加載過程并行進行解析渲染處理。在這個過程中遇到link標(biāo)簽同波、image標(biāo)簽鳄梅、script標(biāo)簽時,瀏覽器會再次向服務(wù)器發(fā)送請求獲取css文件未檩、圖片資源戴尸、js文件,并執(zhí)行js代碼冤狡,同步進行加載解析孙蒙。 - 解析、渲染
解析的過程悲雳,其實就是生成解析樹挎峦,即dom樹。dom樹是由dom元素及屬性節(jié)點組成合瓢,加上css解析的樣式對象和js解析后的動作實現(xiàn)坦胶。而渲染,就是將DOM樹進行可視化表示歪玲。下一步就來到了繪制網(wǎng)頁的工作階段迁央。
6.繪制網(wǎng)頁
瀏覽器通過上面步驟計算得到渲染樹,是DOM樹的可視化表示滥崩,構(gòu)建渲染樹使頁面以正確的順序繪制出來岖圈,遵循一定的渲染規(guī)則,經(jīng)過一系列的渲染工作钙皮,實現(xiàn)網(wǎng)站頁面的繪制蜂科,由此最終完成了頁面展示。