當在瀏覽器輸入一個網址后,實際會發生什么?


這個問題的回答主要是翻譯自這篇英文文章 http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 。

那么,輸入網址后,實際發生了什么呢?過程如下:

1、輸入網址。

2、瀏覽器查找域名的IP地址。

 導航的第一步是通過訪問的域名找出其IP地址。DNS查找過程如下:
  • 瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間。 有趣的是,操作系統沒有告訴瀏覽器儲存DNS記錄的時間,這樣不同瀏覽器會儲存個自固定的一個時間(2分鍾到30分鍾不等)。
  • 系統緩存 – 如果在瀏覽器緩存里沒有找到需要的記錄,瀏覽器會做一個系統調用(windows里是gethostbyname)。這樣便可獲得系統緩存中的記錄。
  • 路由器緩存 – 接着,前面的查詢請求發向路由器,它一般會有自己的DNS緩存。
  • ISP DNS 緩存 – 接下來要check的就是ISP緩存DNS的服務器。在這一般都能找到相應的緩存記錄。

3. 瀏覽器給web服務器發送一個HTTP請求

4. 網站服務的永久重定向響應

服務器給瀏覽器響應一個301永久重定向響應,為什么服務器一定要重定向而不是直接發會用戶想看的網頁內容呢?其中一個原因跟搜索引擎排名有關。如果一個頁面有兩個地址,就像http://www.igoro.com/ 
http://igoro.com/,搜索引擎會認為它們是兩個網站,結果造成每一個的搜索鏈接都減少從而降低排名。而搜索引擎知道301永久重定向是什么意思,這樣就會把訪問帶www的和不帶www的地址歸到同一個網站排名下。還有一個是用不同的地址會造成緩存友好性變差。當一個頁面有好幾個名字時,它可能會在緩存里出現好幾次。

5. 瀏覽器跟蹤重定向地址

   現在,瀏覽器知道了要訪問的正確地址,所以它會發送另一個獲取請求。請求頭部一般包括:
   Accept
   Accept-language
   Accept-Encoding
   Connection
   User-Agent
   Cookie
   Host

6. 服務器“處理”請求

服務器接收到獲取請求,然后處理並返回一個響應。

7. 服務器發回一個HTML響應

8. 瀏覽器開始顯示HTML

9. 瀏覽器發送請求,以獲取嵌入在HTML中的對象

在瀏覽器顯示HTML時,它會注意到需要獲取其他地址內容的標簽。這時,瀏覽器會發送一個獲取請求來重新獲得這些文件。這些文件就包括CSS/JS/圖片等資源,這些資源的地址都要經歷一個和HTML讀取類似的過程。所以瀏覽器會在DNS中查找這些域名,發送請求,重定向等等…

10. 瀏覽器發送異步(AJAX)請求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM