寫下這篇文章留個紀念,各位前端的小伙伴也可以做個參考,也期待你們的補充。
問:從輸入URL到頁面加載完成是一個怎樣的過程?
答:服務器啟動好監聽服務,准備迎接來自客戶機的請求,
1、輸入地址
當我們開始在瀏覽器中輸入網址的時候,瀏覽器其實已經開始在智能的匹配可能得到的URL了,他會從歷史記錄、書簽等地方,找到已經輸入的字符串可能對應的URL,然后給出智能的提示,對於Google chrome這種聰明的瀏覽器,他甚至會直接從緩存中把網頁展示出來,也就是說在你還沒有戳下enter鍵的時候,頁面就已經展示在你面前了,詳細情況先不解釋。
2、瀏覽器查找域名的IP地址
導航的第一步是找出訪問域的IP地址,DNS查找過程如下:
。瀏覽器緩存:瀏覽器緩存DNS記錄一段時間,然而操作系統並沒有告訴瀏覽器每個DNS記錄的生存時間,因此瀏覽器會將其緩存一段固定的時間(一般在2到30分鍾之間)
。操作系統緩存:如果瀏覽器緩存不包含所需的記錄,則瀏覽器進行系統調用(Windows中的gethostbyname)。操作系統有自己的緩存。
。路由器緩存:請求繼續到您的路由器,路由器通常具有自己的DNS緩存。
。ISP DNS緩存:檢查的下一個是ISP的DNS緩存,這里自然也會有一個緩存。
。遞歸搜索:ISP的DNS服務器開始遞歸搜索,從根名稱服務器通過.com頂級名稱服務器到Facebook的名稱服務器。通常來講,DNS服務器將在緩存中具有.com名稱服務器的名稱,因此對根名稱的服務器的命中是不必要的(不太明白。。。。)
3、瀏覽器向web服務器發送一個http請求
一般網頁的動態主頁不會存在於緩存中,因為動態頁面都會有一個非常短暫的時間設為過期時間,因此瀏覽器會將此請求發往服務器,get請求命名要提取自己的URL(例如:http://baidu.com),瀏覽器識別自己的請求頭,並說明自己接受哪一類類型的響應等
4、服務器的永久重定向響應(從http://baidu.com 到 http://www.baidu.com)
服務器收到請求后開始響應,將http://baidu.com重定向到 http://www.baidu.com
5、瀏覽器跟蹤重定向地址
瀏覽器知道http://www.baidu.com是正確的URL,因此它會發出另一個get請求
6、服務器處理請求
服務器將受到get請求,處理它並發送回應
7、服務器返回一個http響應
服務器生成並發回響應,包含響應頭,響應正文,緩存時間信息,以及其他信息