1.在瀏覽器輸入URL
URL是什么?
URL—>Uniform Resource Locator—>統一資源定位符,如同在網絡上的門牌,是因特網上標準的資源的地址(Address),互聯網上的每個文件都有一個唯一的URL,俗稱網頁地址。
URL組成:URL由協議,域名,端口,文件路徑組成
例如:https://jirengu.com/app/album/index
2.域名解析
對于 http://jirengu.com 的URL,瀏覽器實際上不知道jirengu.com到底是什么東西,需要查找jirengu.com網站所在服務器的IP地址,才能找到目標
域名解析流程
瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間
系統緩存 - 從 Hosts 文件查找是否有該域名和對應 IP。
路由器緩存 – 一般路由器也會緩存域名信息。
ISP DNS 緩存 – 比如到電信的 DNS 上查找緩存。
如果都沒有找到,則向根域名服務器查找域名對應 IP,根域名服務器把請求轉發到下一級,直到找到 IP
3. 服務器處理
什么是服務器?
服務器是一臺安裝系統的機器,常見的系統如Linux、windows server 2012
系統里安裝的處理請求的應用叫 Web server
常見的 web服務器有 Apache、Nginx、IIS、Lighttpd
Web server是什么?
接收用戶的請求交給網站代碼,或者接受請求反向代理到其他 web服務器。
Web server可以代指硬件或軟件,它們是協同工作的。
- 在硬件部分,一個網絡服務器是一個用來存儲網站的組成文件(比如說 HTML 文檔,圖片,CSS 樣式表,和 JavaScript 文件)以及交付它們到終端用戶的設備的計算機。它跟互聯網連接并可以通過域名像 mozilla.org 來被訪問。
- 在軟件部分,一個網絡服務器包括幾個控制網絡用戶如何訪問托管文件的部分,至少是一個 HTTP 服務器 [HTTP server]。一個 HTTP 服務器是一個能理解URLs (網絡地址) 和 HTTP 的軟件。
Web server存在的意義是什么?
瀏覽器把用戶發起的HTTP請求發送給服務器后,Web server會進而在它做自己的存儲空間中搜索所請求的文件(因為同一個服務器地址,有時候可能同時綁定了多個域名)。當找到這文件時,這個服務器會讀取它,按需處理它,并且把它傳送回瀏覽器。Web server就相對于起到了內容分發的作用,為不同域名的用戶請求展示其相應的內容。下圖很清楚的表達了這些內容。

4.網站處理流程
這一步實際上就是后臺處理數據反饋給瀏覽器之前的過程,拿MVC設計模式來說,就是控制器接收用戶請求,然后調用相應的數據模型,按照相應的業務邏輯處理請求返回的數據,然后再經過控制器處理,返回html字符串給瀏覽器。如下圖:

5.瀏覽器處理
- 加載
瀏覽器對一個html頁面的加載順序是從上而下的,并在加載過程并行進行解析渲染處理。在這個過程中遇到link標簽、image標簽、script標簽時,瀏覽器會再次向服務器發送請求獲取css文件、圖片資源、js文件,并執行js代碼,同步進行加載解析。 - 解析.渲染
解析的過程,其實就是生成解析樹,即dom樹。dom樹是由dom元素及屬性節點組成,加上css解析的樣式對象和js解析后的動作實現。而渲染,就是將DOM樹進行可視化表示。下一步就來到了繪制網頁的工作階段。
6.網頁制作
瀏覽器通過上面步驟計算得到渲染樹,是DOM樹的可視化表示,構建渲染樹使頁面以正確的順序繪制出來,遵循一定的渲染規則,經過一系列的渲染工作,實現網站頁面的繪制,由此最終完成了頁面展示。
總結:
經過以上分析,我們來總結一下從URL輸入到頁面展現發生了什么
1.輸入URL
2.瀏覽器進行域名解析
3.服務器處理用戶請求
4.網站處理
5.瀏覽器處理
6.網頁繪制